前言
学习K210的高速GPIOHS,点亮RGB灯
一、硬件连接
RGB灯的R连接IO6, G连接IO7, B连接IO8
二、在src目录下新建文件夹,名字叫做gpiohs_rgb_my
三、在gpiohs_rgb_my目录下再新建两个文件,分别是main.c和pin_config.h
四、在main.c文件中写入如下代码
#include "pin_config.h"
#include "gpiohs.h"
#include "sleep.h"
//硬件引脚初始化,绑定GPIO口
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);}//关灯
void rgb_all_off(void)
{gpiohs_set_pin(RGB_R_GPIONUM, GPIO_PV_HIGH);gpiohs_set_pin(RGB_G_GPIONUM, GPIO_PV_HIGH);gpiohs_set_pin(RGB_B_GPIONUM, GPIO_PV_HIGH);
}void init_rgb(void)
{// 设置RGB灯的GPIO模式为输出gpiohs_set_drive_mode(RGB_R_GPIONUM, GPIO_DM_OUTPUT);gpiohs_set_drive_mode(RGB_G_GPIONUM, GPIO_DM_OUTPUT);gpiohs_set_drive_mode(RGB_B_GPIONUM, GPIO_DM_OUTPUT);// 关闭RGB灯rgb_all_off();
}int main(void)
{// RGB灯状态,0=红灯亮,1=绿灯亮,2=蓝灯亮int state = 0;// 硬件引脚初始化hardware_init();// 初始化RGB灯init_rgb();while(1){rgb_all_off(); // 先关闭RGB灯// 根据state的值点亮不同颜色的灯gpiohs_set_pin(state, GPIO_PV_LOW);msleep(500); //延时500msstate++;state = state % 3;}return 0;
}
五、在pin_config.h文件中写入如下代码
#ifndef _PIN_CONFIG_H_
#define _PIN_CONFIG_H_/*****************************HEAR-FILE************************************/
#include "fpioa.h"/*****************************HARDWARE-PIN*********************************/
// 硬件IO口,与原理图对应
#define PIN_RGB_R (6)
#define PIN_RGB_G (7)
#define PIN_RGB_B (8)
/*****************************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_GPIOHS0 + RGB_R_GPIONUM)
#define FUNC_RGB_G (FUNC_GPIOHS0 + RGB_G_GPIONUM)
#define FUNC_RGB_B (FUNC_GPIOHS0 + RGB_B_GPIONUM)#endif