前言
基础的文件创建,参赛资源代码的导入,我就不说了,直接说CubeMX的配置以及代码逻辑思路的书写,在此我也预祝大家人人拿国奖
理论讲解
原理图简介
1.由于存在PC8引脚到PC15引脚存在冲突,那么官方硬件给的解决方案是加入了一个PD2锁存器,但是有这个是远远不够的,如果想要解决,可以在LED笔记那里观看解决
2.LED只有设置为低电压时才可以让我们的灯泡亮
手册讲解
在你学习的时候可能出现以下情况
HAL_GPIO_WritePin(GPIOC,0xFF00, GPIO_PIN_RESET);
这个就要追溯到我们的底层代码去了解一下HAL_GPIO_WritePin
当设置为SET时
当设置为RESET时
现在我可以给你个式例
#include "led_test.h"
//uwTick
uint32_t count;
uint32_t PIN=0xFF00;
void led_start(){
count=uwTick;
while(uwTick<count+1000){}
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
count=uwTick;
while(uwTick<count+1000){}
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
}
实战代码
CubeMX的配置
第1步
第2步
Debug配置成Serial Wire(SWD)的原因主要有以下几点:
-
引脚数量少:SWD是一种双线协议,只需要使用两个引脚(SWDIO和SWCLK),相比JTAG等其他调试接口,占用的引脚数量更少,适合引脚资源有限的场景。
-
可靠性高:在高速模式下,SWD比JTAG更加可靠。在大数据量的情况下,JTAG下载程序可能会失败,而SWD发生的几率会小很多。
-
下载速度快:SWD的下载速度可以达到10M/s,且在实际使用中表现稳定。
-
调试效率高:SWD模式下,调试器可以直接访问芯片的寄存器,进行读写操作,便于对系统进行调试。
-
避免用户程序干扰:在调试过程中,如果用户程序存在逻辑错误,可能会影响JTAG下载程序的执行。而SWD模式下,即使用户程序有错误,也可以通过持续复位的方式避免用户程序的干扰,从而正常下载程序。
-
开发工具支持:许多现代的开发工具和调试器都支持SWD模式,比如STM32CubeMX等,在这些工具中配置SWD可以确保调试和下载的顺利进行。
因此,将Debug配置成Serial Wire模式,可以提高调试的效率和可靠性,减少引脚占用,避免用户程序的干扰,并且得到开发工具的良好支持。
第3步
led代码
#include "led_test.h"
//uwTick
uint32_t count;
uint32_t PIN=0xFF00;
void led_start(){
count=uwTick;
while(uwTick<count+1000){}
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
count=uwTick;
while(uwTick<count+1000){}
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC,PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2, GPIO_PIN_RESET);
}