stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门
作者:互联网
初学G431这块板子的时候,用的是STM32cubeMX 和keil-MDK ,在百度上搜到的全是标准库的代码,但是cubeMX用的是HAL库 代码很不一样,而且对于引脚的初始化,标准库的方式需要手动进行配置,但如果使用cubeMX的话,所有初始化配置都由代码转变成可视化图形。
使用这两个软件进行开发
G431的板子上自带了DAP转串口,只要接上电脑就可以使用(win10);
在写流水灯代码之前 我们要下载G431的固件包 这些网上教程其实已经非常详细了。
下面说说几个要注意的地方,
一定一定要学会查产品手册,因为我们想要控制LED灯,就必须知道控制LED的引脚是哪几个
可以看到板子上的八个LED灯被引脚PC8-PC15控制,下一步就可以打开cubeMX进行配置了
打开cubeMX,按步骤操作
选择相应芯片
依次选择PC8-PC15引脚为GPIO_OUTPUT(对应LD1-LD8)
设置sys为sw模式,这里不懂跟着做就ok
设置项目名称以及调整开发环境为MDK-ARM,完成后点击GENERATE CODE创建工程文件
在stm32cube内的设置在main.c内已经初始化完毕,双击打开
这里面已经写好了所有GPIO初始化代码,我们只需要写上用户自己的代码即可
用户个人代码一定要在这两行注释之间进行编写,否则再次通过stm32cube修改初始化配置后,个人代码将被覆盖删除
用户代码如下
使用HAL_GPIO_WritePin()函数对引脚的输出电平进行控制,分析产品手册中电路可知,低电平时LED点亮,高电平时LED熄灭
使用HAL_Delay()进行延时 具体语法可以查看stm32g4xx.gpio.c文件查看。
用户代码在末尾有
这里需要调用两个函数 HAL_GPIO_WritePin()和 HAL_Delay()
HAL_GPIO_WritePin()的作用是改变引脚输出的电平。
HAL_Delay()的作用是延时 单位是毫秒;
代码编写完成后,点击bulid按钮进行编译,如程序编写无错误,编译完成后即可烧录至电路板中运行
这里讲一下debug的配置
点击魔术棒后 选择debug
在下拉菜单中选择DAP
然后点击旁边的settings按钮,可以看到我们的板子,选择flash download
勾上这个,这样程序一下载就可以自己跑,不用手动按复位键
设置好这些就可以直接下载程序了。
附上流水灯代码(写在while(1)里面):
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,1);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,0);
HAL_Delay(1000);
标签:Delay,HAL,PIN,WritePin,蓝桥,GPIOC,串口,GPIO 来源: https://blog.csdn.net/xingyekm/article/details/118798757