本任務(wù)要求設(shè)計(jì)一個(gè) LED 流水燈系統(tǒng)抛人,具體要求如下,
系統(tǒng)中有 8 個(gè) LED 燈假栓,分別是 LED1~LED8情臭。系統(tǒng)上電時(shí)年鸳,8 個(gè) LED 燈默認(rèn)為熄滅狀態(tài)趴久。
接下來(lái) 8 個(gè) LED 燈依次點(diǎn)亮,即:LED1 點(diǎn)亮 1 秒后熄滅搔确,然后 LED2 點(diǎn)亮 1 秒后熄滅……最后 LED8 點(diǎn)亮 1 秒后熄滅彼棍,并以此循環(huán)往復(fù)。
0.硬件原理圖分析
1.CubeMX新建工程文件夾task3_project
2.SWD調(diào)試端口的配置
3.配置HSE和LSE,配置時(shí)鐘樹(shù)
4.配置GPIO功能端口
5.定時(shí)器TIM6的配置
6.定時(shí)器中斷的配置
7.保存STM32CubeMX工程
8.生成C代碼工程膳算,完善代碼
0.硬件原理圖分析
1.CubeMX新建工程文件夾task3_project
在“STM32_WorkSpace”文件夾下新建文夾“task3_WaterFlow_LED”用于保存本任務(wù)工程座硕。
新建 STM32CubeMX 工程,選擇 MCU 型號(hào)畦幢,選擇型號(hào)為 STM32F103VE 的微控制器
2.SWD調(diào)試端口的配置
將“PA13”引腳配置為 SWDIO 功能坎吻,“PA14”引腳配置為 SWCLK
功能;
3.配置HSE和LSE,配置時(shí)鐘樹(shù)
將 HCLK 配置為 72MHz宇葱,PCLK1 配置為 36MHz瘦真,PCLK2 配置為 72MHz。將 MCU 的“High Speed Clock(HSE黍瞧,高速外部時(shí)鐘)配置為“Crystal/Ceramic Resonator(晶體/陶瓷諧振器)”將 MCU 的Low Speed Clock(LSE诸尽,低速外部時(shí)鐘)”配置為Crystal/Ceramic Resonator(晶體/陶瓷諧振器);
4.配置GPIO功能端口
GPIO_MODE_INPUT:輸入模式
GPIO_MODE_OUTPUT_PP:推挽輸出模式
GPIO_MODE_OUTPUT_OD:開(kāi)漏輸出模式
GPIO_MODE_AF_PP:推挽復(fù)用模式
GPIO_MODE_AF_OD:開(kāi)漏復(fù)用模式
GPIO_MODE_AF_INPUT:復(fù)用輸入模式
GPIO_MODE_ANALOG:模擬量輸入模式
標(biāo)號(hào)①:MCU 輸出低電平時(shí) LED 燈亮印颤,因此將 GPIO 默認(rèn)的輸出電平配置為“High(高電平)”
標(biāo)號(hào)②:GPIO 模式配置為“Output Push Pull(輸出推挽功能)”您机;
標(biāo)號(hào)③:GPIO 上拉下拉功能配置為“No pull-up and no pull-down(無(wú)上拉下拉)”
標(biāo)號(hào)④:GPIO 最大輸出速度配置為“High(高速)”;
標(biāo)號(hào)⑤:用戶標(biāo)簽分別配置成“LED1~LED8”。
5.定時(shí)器TIM6的配置
展開(kāi)“Pinout & Configuration”標(biāo)簽頁(yè)左側(cè)的“Timers(定時(shí)器)”選項(xiàng)际看,選擇“TIM6(定時(shí)器 6)”選項(xiàng)(圖 2中標(biāo)號(hào)①處)咸产。勾選“Activated(激活)”復(fù)選框(圖 2-34 中的標(biāo)號(hào)②處)。將“Prescaler(分頻系數(shù))”配置為“72000000/10000-1”(圖 2-34 中的標(biāo)號(hào)③處)仲闽,即:將定時(shí)器 6 的時(shí)鐘頻率配置為 10kHz脑溢。將“Counter Period(定時(shí)器周期,自動(dòng)重載寄存器值)”配置為“10000-1” (圖 2中的標(biāo)號(hào)④處)赖欣,即:定時(shí)器的更新周期為 1 秒屑彻。
展開(kāi)“Pinout & Configuration”標(biāo)簽頁(yè)左側(cè)的“System Core(系統(tǒng)內(nèi)核)”選項(xiàng),選擇“NVIC”選項(xiàng)(圖 3 中標(biāo)號(hào)①處)顶吮。勾選使能“TIM6 global interrupt(定時(shí)器 6全局中斷)”社牲,如圖 3中的標(biāo)號(hào)②所示。然后將其搶占優(yōu)先級(jí)配置為“2”級(jí)悴了,如圖 3 中的標(biāo)號(hào)③所示
7.保存STM32CubeMX工程
點(diǎn)擊“File(文件)”菜單搏恤,選擇“Save Project(保存工程)”選項(xiàng)。然后定位到文件夾“D:\STM32_WorkSpace\task2_WaterFlow_LED”让禀,點(diǎn)擊“確定”保存 STM32CubeMX 工程挑社;
參考 相關(guān)內(nèi)容進(jìn)行“C 代碼生成”與“工程保存”的配置陨界,最后點(diǎn)擊“GENERATECODE(生成代碼)”按鈕巡揍,生成 LED 流水燈系統(tǒng)的初始 C 代碼工程。
8.生成C代碼工程菌瘪,完善代碼
在“main.c”中添加以下代碼啟動(dòng) TIM6 的中斷腮敌。
編寫 TIM6 中斷服務(wù)程序,在“main.c”中定義公共變量 num
添加 TIM6 中斷服務(wù)程序:
編譯程序并下載運(yùn)行后的現(xiàn)象是系統(tǒng)上電時(shí)俏扩,8 個(gè) LED 燈默認(rèn)為熄滅狀態(tài)糜工,接下來(lái) 8 個(gè)LED 燈依次點(diǎn)亮。