01-电气原理
(1)电气接线图如下图:
从上图可知:是三色LED,且LED低电平有效
02-操作代码:
#include "sleep.h"
#include "gpio.h"
#include "fpioa.h"
/*****************************HARDWARE-PIN*********************************/
// 硬件IO口,与原理图对应
#define PIN_RGB_R (12)
#define PIN_RGB_G (13)
#define PIN_RGB_B (14)
/*****************************SOFTWARE-GPIO********************************/
// 软件GPIO口,与程序对应
#define RGB_R_GPIONUM (0)
#define RGB_G_GPIONUM (1)
#define RGB_B_GPIONUM (2)
/*****************************FUNC-GPIO************************************/
// GPIO口的功能,绑定到硬件IO口
#define FUNC_RGB_R (FUNC_GPIO0 + RGB_R_GPIONUM)
#define FUNC_RGB_G (FUNC_GPIO0 + RGB_G_GPIONUM)
#define FUNC_RGB_B (FUNC_GPIO0 + RGB_B_GPIONUM)
/**
* Function hardware_init
* @brief 硬件初始化,绑定GPIO口
* @param[in] void
* @param[out] void
* @retval void
* @par History 无
*/
void hardware_init(void)
{
// fpioa映射
fpioa_set_function(PIN_RGB_R, FUNC_RGB_R);
fpioa_set_function(PIN_RGB_G, FUNC_RGB_G);
fpioa_set_function(PIN_RGB_B, FUNC_RGB_B);
}
/**
* Function hardware_init
* @brief RGB灯灭
* @param[in] void
* @param[out] void
* @retval void
* @par History 无
*/
void rgb_all_off(void)
{
gpio_set_pin(RGB_R_GPIONUM, GPIO_PV_HIGH);
gpio_set_pin(RGB_G_GPIONUM, GPIO_PV_HIGH);
gpio_set_pin(RGB_B_GPIONUM, GPIO_PV_HIGH);
}
/**
* Function init_rgb
* @brief 初始化RGB灯
* @param[in] void
* @param[out] void
* @retval void
* @par History 无
*/
void init_rgb(void)
{
// 设置RGB灯的GPIO模式为输出
gpio_set_drive_mode(RGB_R_GPIONUM, GPIO_DM_OUTPUT);
gpio_set_drive_mode(RGB_G_GPIONUM, GPIO_DM_OUTPUT);
gpio_set_drive_mode(RGB_B_GPIONUM, GPIO_DM_OUTPUT);
// 关闭RGB灯
rgb_all_off();
}
/**
* Function main
* @brief 主函数,程序的入口
* @param[in] void
* @param[out] void
* @retval 0
* @par History 无
*/
int main(void)
{
// RGB灯状态,0=红灯亮,1=绿灯亮,2=蓝灯亮
int state = 0;
// 硬件引脚初始化
hardware_init();
// 初始化RGB灯
init_rgb();
while (1)
{
rgb_all_off(); // 先关闭RGB灯
// 根据state的值点亮不同颜色的灯
gpio_set_pin(state, GPIO_PV_LOW);
msleep(500);
state++;
state = state % 3;
}
return 0;
}
03-注意事项:
- 注意fpioa_set_function()使用方法,是使用宏定义方式来设置引脚