假期期間打算開(kāi)一個(gè)坑,和大家分享下基于RoboMaster開(kāi)發(fā)板C型上RT-Thread使用,本系列文章計(jì)劃是給剛接觸STM32和RT-Thread的同學(xué)看的,講的會(huì)稍微基礎(chǔ)一點(diǎn)。
硬件與開(kāi)發(fā)環(huán)境介紹
開(kāi)發(fā)板:
本次選用的開(kāi)發(fā)板是大疆創(chuàng)新的RoboMaster開(kāi)發(fā)板C型,其上面采用高性能的STM32F407IG芯片。開(kāi)發(fā)板C型具有如下外設(shè):
用戶自定義LED、5V接口、BOOT配置接口、micro USB接口、SWD接口、按鍵、可配置I/O接口、UART接口、CAN總線接口、PWM接口、DBUS接口、數(shù)字?jǐn)z像頭FPC接口、蜂鳴器、電壓檢測(cè)ADC、六軸慣性測(cè)量單元和磁力計(jì)。
這個(gè)也是我可以找到體積最小的板載陀螺儀的開(kāi)發(fā)板,常用的接口也都有,很適合用在控制上。
軟件環(huán)境:
IDE:RT-Thread Studio
RT-Thread:V4.1.0
STM32CubeMx:V6.7.0
STM32CubeProgrammer:V2.11.0
STM32CubeMonitor:V1.4.0
我平時(shí)開(kāi)發(fā)常用的IDE實(shí)際上是Jetbrains家的Clion但是為了教程的通用性就選擇了免費(fèi)的RT-Thread Studio。
教程第一步:點(diǎn)燈
本次我們選擇UART1作為我們的控制臺(tái)串口,根據(jù)原理圖我們得知發(fā)送腳為PA9,接收腳為PB7。
因此我們創(chuàng)建項(xiàng)目的選擇如下
之后我們需要在CubeMX Setting中進(jìn)行時(shí)鐘樹(shù)和引腳的配置。
在 System Core 下選擇 RCC 選項(xiàng),在 RCC mode and Configuration 中的 High Speed
Clock(HSE)下選擇 Crystal/Ceramic Resonator
之后進(jìn)行時(shí)鐘樹(shù)的配置,我們需要修改紅框內(nèi)的數(shù)據(jù)如下圖
配置的根據(jù)如下:
Input frequency這個(gè)是根據(jù)板載的外部高速晶振來(lái)設(shè)置的,具體板子具體設(shè)置。
PLL的信號(hào)來(lái)源我們這里選擇HSE(外部高速時(shí)鐘),不選擇HSI(內(nèi)部高速時(shí)鐘)是由于HSI時(shí)鐘信號(hào)是由RC振蕩電路產(chǎn)生的精度相對(duì)較差,而HSE時(shí)鐘信號(hào)是由石英晶體產(chǎn)生精度相對(duì)而言更高,所以選擇HSE。
后面灰色框內(nèi)的M、N、P是PLL(鎖相環(huán))的分頻倍頻參數(shù),將我們輸入的HSE或者HSI時(shí)鐘信號(hào)進(jìn)行分頻、倍頻得到更高的時(shí)鐘頻率。這里我們配置的原因是因?yàn)槲覀兿M鸖YSCLK(系統(tǒng)時(shí)鐘)的頻率達(dá)到STM32F407可到最高的168MHz。
系統(tǒng)時(shí)鐘可以由三種時(shí)鐘源來(lái)驅(qū)動(dòng)
-
HSI振蕩器時(shí)鐘
-
HSE振蕩器時(shí)鐘
-
Main PLL時(shí)鐘
而HSI和HSE在此處都不能到達(dá)168MHz因此我們這里我們這里選擇通過(guò)PLL倍頻后驅(qū)動(dòng)SYSCLK。
因此PLL的三個(gè)參數(shù)也是通過(guò)湊出倍頻后得到168MHz計(jì)算得到的。
最后我們修改的兩處為配置AHB頻率的預(yù)分頻器,這里我們需要根據(jù)STM32F4xx中文參考手冊(cè)來(lái)配置。根據(jù)下圖我們可知APB1的最大頻率為42MHz,APB2的最大頻率為84MHz,因此我們的分頻值分別設(shè)置為4和2來(lái)匹配最大頻率。
后面我們點(diǎn)擊頂部的 Pinout & Configuartion,選擇 SYS,在 Debug 下拉框中選擇 Serial Wire。
隨后配置命令行串口所需的UART1引腳,配置哪一個(gè)引腳需要根據(jù)開(kāi)發(fā)板原理圖來(lái)設(shè)置,用于STM32許多引腳都有復(fù)用功能的,所以哪個(gè)引腳有什么功能是需要根據(jù)硬件來(lái)看的。原來(lái)創(chuàng)建工程的時(shí)候我們就看了原理圖發(fā)送腳為PA9,接收腳為PB7,所以這里我們就直接設(shè)置。
由于我們這里要進(jìn)行點(diǎn)燈所以我們來(lái)設(shè)置一下GPIO。根據(jù)原理圖我們知道LED_B、LED_G、LED_R引腳分別為PH10、PH11、PH12,我們?cè)贑ubeMX中進(jìn)行配置。
把這三個(gè)引腳設(shè)置為GPIO_Output。
隨后點(diǎn)擊GENERATE CODE生成代碼
根據(jù)原理圖我們可以發(fā)現(xiàn)三個(gè)引腳不處于高電平的輸出狀態(tài),那么三極管的控制端將會(huì)被下拉電阻拉為低電平,當(dāng) LED_B、LED_G 和 LED_R 處于高電平的輸出狀態(tài),通過(guò)原理圖中 1kΩ與 10kΩ的分壓后,三極管的基極控制端將變成高電平,故而三級(jí)管的控制端電壓將變成高電平。因此引腳為高電平時(shí),LED燈亮。
在main函數(shù)中編寫如下代碼進(jìn)行點(diǎn)燈。
1/*
2*Copyright(c)2006-2022,RT-ThreadDevelopmentTeam
3*
4*SPDX-License-Identifier:Apache-2.0
5*
6*ChangeLogs:
7*DateAuthorNotes
8*2022-12-29RT-Threadfirstversion
9*/
10#include
11#include
12#include
13/*定義LED引腳*/
14#ifndefLED_B_PIN
15#defineLED_B_PINGET_PIN(H,10)
16#endif
17#ifndefLED_G_PIN
18#defineLED_G_PINGET_PIN(H,11)
19#endif
20#ifndefLED_R_PIN
21#defineLED_R_PINGET_PIN(H,12)
22#endif
23intmain(void)
24{
25/*設(shè)置LED引腳為輸出模式*/
26rt_pin_mode(LED_B_PIN,PIN_MODE_OUTPUT);
27rt_pin_mode(LED_G_PIN,PIN_MODE_OUTPUT);
28rt_pin_mode(LED_R_PIN,PIN_MODE_OUTPUT);
29intcount=1;
30while(count++)
31{
32rt_pin_write(LED_B_PIN,PIN_HIGH);
33rt_thread_mdelay(500);
34rt_pin_write(LED_B_PIN,PIN_LOW);
35rt_pin_write(LED_G_PIN,PIN_HIGH);
36rt_thread_mdelay(500);
37rt_pin_write(LED_G_PIN,PIN_LOW);
38rt_pin_write(LED_R_PIN,PIN_HIGH);
39rt_thread_mdelay(500);
40rt_pin_write(LED_R_PIN,PIN_LOW);
41}
42returnRT_EOK;
43}
最終效果為紅、綠、藍(lán)三個(gè)燈依次亮滅。
本次分享就到此為止,感謝大家的觀看,我也會(huì)盡力更新這個(gè)系列的!
————————————————
版權(quán)聲明:
本文為RT-Thread論壇用戶「goldengrandpa」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:
https://club.rt-thread.org/ask/article/09dffc578f32d85d.html
你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進(jìn)RT-Thread官方微信交流群!
點(diǎn)擊閱讀原文回看開(kāi)發(fā)者大會(huì)
原文標(biāo)題:基于RoboMasterC型開(kāi)發(fā)板的RT-Thread使用分享(一)
文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
RT-Thread
+關(guān)注
關(guān)注
31文章
1302瀏覽量
40268
原文標(biāo)題:基于RoboMasterC型開(kāi)發(fā)板的RT-Thread使用分享(一)
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論