stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 初学G431这块板子的时候,用的是STM32cubeMX 和keil-MDK ,在百度上搜到的全是标准库的代码,但是cubeMX用的是HAL库 代码很不一样,而且对于引脚的初始化,标准库的方式需要手动进行配置,但如果使用cubeMX的话,所有初始化配置都由代码转变成可视化图形。

使用这两个软件进行开发

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 G431的板子上自带了DAP转串口,只要接上电脑就可以使用(win10);

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 在写流水灯代码之前 我们要下载G431的固件包 这些网上教程其实已经非常详细了。

下面说说几个要注意的地方,

 一定一定要学会查产品手册,因为我们想要控制LED灯,就必须知道控制LED的引脚是哪几个

可以看到板子上的八个LED灯被引脚PC8-PC15控制,下一步就可以打开cubeMX进行配置了

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 打开cubeMX,按步骤操作

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

选择相应芯片

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 依次选择PC8-PC15引脚为GPIO_OUTPUT(对应LD1-LD8)

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

设置sys为sw模式,这里不懂跟着做就ok

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 设置项目名称以及调整开发环境为MDK-ARM,完成后点击GENERATE CODE创建工程文件

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 在stm32cube内的设置在main.c内已经初始化完毕,双击打开

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

这里面已经写好了所有GPIO初始化代码,我们只需要写上用户自己的代码即可

用户个人代码一定要在这两行注释之间进行编写,否则再次通过stm32cube修改初始化配置后,个人代码将被覆盖删除

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 

用户代码如下

使用HAL_GPIO_WritePin()函数对引脚的输出电平进行控制,分析产品手册中电路可知,低电平时LED点亮,高电平时LED熄灭

使用HAL_Delay()进行延时  具体语法可以查看stm32g4xx.gpio.c文件查看。

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 用户代码在末尾有

 

 

 

这里需要调用两个函数 HAL_GPIO_WritePin()和 HAL_Delay()

HAL_GPIO_WritePin()的作用是改变引脚输出的电平。

HAL_Delay()的作用是延时 单位是毫秒;


代码编写完成后,点击bulid按钮进行编译,如程序编写无错误,编译完成后即可烧录至电路板中运行

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 这里讲一下debug的配置

点击魔术棒后 选择debug  

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 在下拉菜单中选择DAP

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 然后点击旁边的settings按钮,可以看到我们的板子,选择flash download

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 勾上这个,这样程序一下载就可以自己跑,不用手动按复位键

stm32g431rbt6 流水灯 国信长天蓝桥杯嵌入式 HAL库 串口配置 入门

 设置好这些就可以直接下载程序了。



附上流水灯代码(写在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);
 

上一篇:单片机:按键控制源代码


下一篇:Kotlin Coroutine(协程): 一、样例