一、准备
原理图
芯片型号为STM32G431RBT6
![](https://i-blog.csdnimg.cn/blog_migrate/46e20cd1be16234bef51af4540893b32.png)
软件坏境
STM32CubeMX、keil5须下载该系列芯片包。
二、原理
板子上共有8个LED灯。
PC8 | LED1 |
PC9 | LED2 |
PC10 | LED3 |
PC11 | LED4 |
PC12 | LED5 |
PC13 | LED6 |
PC14 | LED7 |
PC15 | LED8 |
LED经74HC573锁存器控制。
![](https://i-blog.csdnimg.cn/blog_migrate/d39423666d9d35afb09a2ea5912c28cc.png)
想点亮LED,首先先让PC8-15输出电平,然后让PD2为高电平,再让PD2为低电平,这样PC8-15的电平状态就会被保存。
三、CubeMX配置
选择芯片型号
![](https://i-blog.csdnimg.cn/blog_migrate/564c0c8b19f8c22e70d1765fc344d8d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4af3f3cd83c22b338a3edfc1a97cbe4e.png)
设置SWD(Serial Wire Debug)
![](https://i-blog.csdnimg.cn/blog_migrate/56c187a4098d5062a7bc975cc28e42be.png)
外部高速时钟
![](https://i-blog.csdnimg.cn/blog_migrate/a35d9ff99647336b15d3e50fe3ae73be.png)
时钟树
设置最大频率然后选择可行的方案。
如果进行到后面的步骤发现下载后板子没反应,可重新执行这一步再尝试编译下载。
![](https://i-blog.csdnimg.cn/blog_migrate/bb099d7da7868204391e0aa12586c8c5.png)
LED引脚
使能PD2为output模式,控制74HC573。这里用PC8举例,使能PC8为output模式,控制LED1,其余LED同理。
![](https://i-blog.csdnimg.cn/blog_migrate/b382cdd4166cbcd2023b6af2e654152c.png)
选择生成独立的“.c”和".h"文件
![](https://i-blog.csdnimg.cn/blog_migrate/1a9f2c8d5599f0abb01a828839af123d.png)
创建工程
工程名和路径不能有中文。IDE选择MDK-ARM(keil5)。最后点击GENERATE CODE生成代码。
![](https://i-blog.csdnimg.cn/blog_migrate/1edcdec602ff44d92d7654713c039720.png)
四、keil设置
调试器
选择CMSIS-DAP Debugger调试器,然后点击Setings。
![](https://i-blog.csdnimg.cn/blog_migrate/93db2750729c525757c77403050430a1.png)
在Setting下,选择SW模式
![](https://i-blog.csdnimg.cn/blog_migrate/9631d4321ec2579af5b539fe9741751c.png)
在Flash Download选项卡下,勾选Reset and Run
![](https://i-blog.csdnimg.cn/blog_migrate/85050c89b277d027445859eb09736639.png)
配置完成后,即可直接使用keil自带的下载与调试功能
![](https://i-blog.csdnimg.cn/blog_migrate/997f307d70d7d43f28d2f35ffa9a4232.png)
五、下载测试
在主函数while写入如下程序进行测试,最终观测到LED1快速闪烁说明成功。
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_8);//反转PC8的电平
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//打开锁存器
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关闭锁存器
HAL_Delay(100);
如果编译下载后板子无反应,可重新执行时钟树的配置再尝试。
每次更改CubeMX的设置后都需要重新生成一次代码才会生效。