文章目錄
- 一、創建CubeMX項目
- 操作步驟
- 1.STM32CubeMX創建工程
- 2.選擇芯片
- 3.Pinout & Configuration配置
- 4.Clock Configuration配置
- 5.Project Manager配置
- 二、實驗
- (一)LED流水燈
- 1.Keil修改代碼
- 2.實驗現象
- 3.keil波形仿真
- (二)2只LED燈的周期性閃爍
- 1.Keil修改代碼
- 2.實驗現象
- 3.波形仿真
- (三)中斷控制流水燈
- 1.步驟
- 2.keil代碼部分
- 3.實驗現象
- 4.keil波形仿真
- 三、總結
一、創建CubeMX項目
操作步驟
1.STM32CubeMX創建工程
打開STM32CubeMX,新建工程。
2.選擇芯片
3.Pinout & Configuration配置
4.Clock Configuration配置
5.Project Manager配置
注意保存文件的路徑不能含有中文字符。
至此,接下來會進入keil,并自動創建keil的代碼。
二、實驗
(一)LED流水燈
重做上一個LED流水燈作業
1.Keil修改代碼
在main()函數的while(1)循環里修改代碼
直接編譯,下載。
2.實驗現象
20240520_001
3.keil波形仿真
(二)2只LED燈的周期性閃爍
用GPIO端口完成2只LED燈的周期閃爍。
1.Keil修改代碼
在main()函數的while(1)循環里修改代碼
代碼:
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);HAL_Delay(250); //延時0.25sHAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);HAL_Delay(250); //延時0.25s
2.實驗現象
20240524_001
3.波形仿真
(三)中斷控制流水燈
接上,再用GPIO端某一管腳接2個開關(用杜邦線模擬代替)。采用中斷模式編程,當2分開關接高電平時,對應的兩個LED燈停止工作(即停止周期性閃爍),接低電平時,恢復工作。(參考教材圖6-12)
思路:用PB1作為開關,杜邦線一端接入PB1,另一端接入
1.步驟
①將PB0和PB1設置為外部中斷源,PA8和PA9作為輸出端口用來接小燈。
②設置中斷源PB0和PB1為上升沿觸發,默認為下拉輸入。
③設置PA8、PA9輸出口的速度為high。
④開啟中斷。
⑤查看有關中斷函數
2.keil代碼部分
①重寫弱函數
HAL_GPIO_EXTI_Callback(GPIO_Pin){if(GPIO_Pin == GPIO_PIN_0|GPIO_PIN_1){HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); }
}
②main()中的while(1)循環
while (1){HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8);HAL_Delay(250); //延時0.25sHAL_GPIO_TogglePin(GPIOA,GPIO_PIN_9);HAL_Delay(250); //延時0.25s}
3.實驗現象
20240524——002
4.keil波形仿真
三、總結
中斷是STM32學習的一個重點,也是一個難點。要深刻理解中斷標志位、明白中斷開始和結束的條件,這幾個關鍵點,才更有助于我們學習中斷。