k210_GPIO使用
听说学会了点灯就学会了一切2333
1.看原理图
我的是绿色板子,观察原理图。LED0
对应IO12
,LED1
对应IO12
.
2.看手册
我看了一会,发现这个芯片有个很牛逼的东西现场可编程 IO 阵列 (Field programmable IO Array)
,他可以自由映射内部的255个功能到外部48个io!真的强
但是这个芯片的缺憾是通用GPIO只有8个,从FUNC_GPIO0
到FUNC_GPIO7
,但是~他还有更强的32个高速GPIO
# 3.coding
功能映射
因为有
FPIOA
的存在,所以我们需要先将io映射到想要的功能:/* 绿色板子IO12-->LED0 IO13-->LED1 */
fpioa_set_function(12, FUNC_GPIO1);
fpioa_set_function(13, FUNC_GPIO2);初始化GPIO
gpio_init();/* 初始化gpio */
设置GPIO模式
这里的
1
就是对应了FUNC_GPIO1
~/* typedef enum _gpio_drive_mode
{
GPIO_DM_INPUT,
GPIO_DM_INPUT_PULL_DOWN,
GPIO_DM_INPUT_PULL_UP,
GPIO_DM_OUTPUT,
} gpio_drive_mode_t; */
gpio_set_drive_mode(1, GPIO_DM_OUTPUT);设置状态 这里没有什么好说的,
HIGH
对应1
,LOW
对应0
gpio_pin_value_t value1= GPIO_PV_HIGH, value2= GPIO_PV_LOW;
gpio_set_pin(1, value1);完整程序 这里的sleep函数是sdk中自带的,这个自带的sleep有三种,完全满足我们的一般要求。
int main(void) {
/* 老板子io 11 12 是led */
fpioa_set_function(12, FUNC_GPIO1);
fpioa_set_function(13, FUNC_GPIO2);
gpio_init();/* 初始化gpio */
gpio_set_drive_mode(1, GPIO_DM_OUTPUT);
gpio_set_drive_mode(2, GPIO_DM_OUTPUT);
gpio_pin_value_t value1= GPIO_PV_HIGH, value2= GPIO_PV_LOW;
gpio_set_pin(1, value1);
gpio_set_pin(2, value2);
while (1) {
sleep(1);
gpio_set_pin(1, value1= !value1);
gpio_set_pin(2, value2= !value2);
}
return 0;
}
4.编译运行
➜ build cmake .. -DPROJ=gpio_led && make |
上电即可看到现象咯。