东西正在来的路上,看着来点个灯折腾看看
正所谓单片机的本质就是电灯,再高级的程序,也是电平信号的解读,所以完成电灯,就犹如你捡起了一块砖,盖房就是诸多的砖头随实际情况和设计进行搭建摆放的。
电灯一般就是驱动GPIO,所以还是要看原理图,是哪几个引脚驱动的
1.查看原理图,了解电灯需要对哪些引脚操作
去下载原理图:https://docs.ai-thinker.com/ai_m61
查找原理图,我们可以看到RGB灯的GPIO位IO15、IO12、IO14.对应蓝色,红色,绿色。
通过基本电路图可知,将对应的管脚拉高即可产生通路,从而点亮LED灯。
2.基本的例程选择,复制出我们需要的
所以在配置完基本的环境后,即可在例程里使用gpio_input_output(GPIO输入输出)例程。
基本路径为AiPi-Open-Kits\aithinker_Ai-M6X_SDK\examples\peripherals\gpio\gpio_input_output
将gpio_input_output在同等路径下复制一份,重新取名为gpio_input_output_RGB
3.编写基本逻辑程序
打开main.c函数
如下编写
- #include "bflb_gpio.h"
- #include "board.h"
- struct bflb_device_s *gpio;
- uint32_t gpio_group[] = {GPIO_PIN_12,GPIO_PIN_14,GPIO_PIN_15};//RGB三原色的引脚控制
- int main(void)
- {
- board_init();
- gpio = bflb_device_get_by_name("gpio");//获取GPIO的设备
- printf("gpio output\r\n");
- //初始化基本gpio管脚配置
- bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
- bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_INPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
- bflb_gpio_init(gpio,GPIO_PIN_15,GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
- //初始化管脚状态
- bflb_gpio_reset(gpio,GPIO_PIN_12);
- bflb_gpio_reset(gpio,GPIO_PIN_14);
- bflb_gpio_reset(gpio,GPIO_PIN_15);
- uint8_t i = 0;
- //循环体
- while (1)
- {
- for(uint8_t j = 0;j < 2;j++)
- {
- bflb_gpio_set(gpio,gpio_group[i]);
- bflb_mtimer_delay_ms(200);
- bflb_gpio_reset(gpio,gpio_group[i]);
- bflb_mtimer_delay_ms(200);
- }
- bflb_gpio_set(gpio,gpio_group[i]);
- bflb_mtimer_delay_ms(500);
- bflb_gpio_reset(gpio,gpio_group[i]);
- i = (i + 1) % 3;
- }
- }
复制代码
从这个程序对比往常写的STM32的可以感觉到,指令集更简便些。至少我个人比较喜欢
4.命令行烧录
先在命令行中慢慢cd到gpio_input_output_RGB文件夹下
然后执行make 回车
完成编译后,先输入make flash COMX=COMXX(先别着急回车)(XX代表的是你COM号,不知道的可以 win + X--->设备管理器--->端口。进行查看)
此时我们需要让开发板进入烧录模式
我们要先按住IO2(不要抬起来),然后按一下EN再松开EN,最后松开IO2,进入下载模式
然后命令行回车
成功烧录即可
再按下EN键重启单片机,即可看到我们闪烁的灯光啦
|