前言
基礎的文件創建,參賽資源代碼的導入,我就不說了,直接說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);
}