假期期間打算開一個坑,和大家分享下基于RoboMaster開發板C型上RT-Thread使用,本系列文章計劃是給剛接觸STM32和RT-Thread的同學看的,講的會稍微基礎一點。
硬件與開發環境介紹
開發板:
本次選用的開發板是大疆創新的RoboMaster開發板C型,其上面采用高性能的STM32F407IG芯片。開發板C型具有如下外設:
用戶自定義LED、5V接口、BOOT配置接口、micro USB接口、SWD接口、按鍵、可配置I/O接口、UART接口、CAN總線接口、PWM接口、DBUS接口、數字攝像頭FPC接口、蜂鳴器、電壓檢測ADC、六軸慣性測量單元和磁力計。
這個也是我可以找到體積最小的板載陀螺儀的開發板,常用的接口也都有,很適合用在控制上。
軟件環境:
IDE:RT-Thread Studio
RT-Thread:V4.1.0
STM32CubeMx:V6.7.0
STM32CubeProgrammer:V2.11.0
STM32CubeMonitor:V1.4.0
我平時開發常用的IDE實際上是Jetbrains家的Clion但是為了教程的通用性就選擇了免費的RT-Thread Studio。
教程第一步:點燈
本次我們選擇UART1作為我們的控制臺串口,根據原理圖我們得知發送腳為PA9,接收腳為PB7。
因此我們創建項目的選擇如下
之后我們需要在CubeMX Setting中進行時鐘樹和引腳的配置。
在 System Core 下選擇 RCC 選項,在 RCC mode and Configuration 中的 High Speed
Clock(HSE)下選擇 Crystal/Ceramic Resonator
之后進行時鐘樹的配置,我們需要修改紅框內的數據如下圖
配置的根據如下:
Input frequency這個是根據板載的外部高速晶振來設置的,具體板子具體設置。
PLL的信號來源我們這里選擇HSE(外部高速時鐘),不選擇HSI(內部高速時鐘)是由于HSI時鐘信號是由RC振蕩電路產生的精度相對較差,而HSE時鐘信號是由石英晶體產生精度相對而言更高,所以選擇HSE。
后面灰色框內的M、N、P是PLL(鎖相環)的分頻倍頻參數,將我們輸入的HSE或者HSI時鐘信號進行分頻、倍頻得到更高的時鐘頻率。這里我們配置的原因是因為我們希望SYSCLK(系統時鐘)的頻率達到STM32F407可到最高的168MHz。
系統時鐘可以由三種時鐘源來驅動
-
HSI振蕩器時鐘
-
HSE振蕩器時鐘
-
Main PLL時鐘
而HSI和HSE在此處都不能到達168MHz因此我們這里我們這里選擇通過PLL倍頻后驅動SYSCLK。
因此PLL的三個參數也是通過湊出倍頻后得到168MHz計算得到的。
最后我們修改的兩處為配置AHB頻率的預分頻器,這里我們需要根據STM32F4xx中文參考手冊來配置。根據下圖我們可知APB1的最大頻率為42MHz,APB2的最大頻率為84MHz,因此我們的分頻值分別設置為4和2來匹配最大頻率。
后面我們點擊頂部的 Pinout & Configuartion,選擇 SYS,在 Debug 下拉框中選擇 Serial Wire。
隨后配置命令行串口所需的UART1引腳,配置哪一個引腳需要根據開發板原理圖來設置,用于STM32許多引腳都有復用功能的,所以哪個引腳有什么功能是需要根據硬件來看的。原來創建工程的時候我們就看了原理圖發送腳為PA9,接收腳為PB7,所以這里我們就直接設置。
由于我們這里要進行點燈所以我們來設置一下GPIO。根據原理圖我們知道LED_B、LED_G、LED_R引腳分別為PH10、PH11、PH12,我們在CubeMX中進行配置。
把這三個引腳設置為GPIO_Output。
隨后點擊GENERATE CODE生成代碼
根據原理圖我們可以發現三個引腳不處于高電平的輸出狀態,那么三極管的控制端將會被下拉電阻拉為低電平,當 LED_B、LED_G 和 LED_R 處于高電平的輸出狀態,通過原理圖中 1kΩ與 10kΩ的分壓后,三極管的基極控制端將變成高電平,故而三級管的控制端電壓將變成高電平。因此引腳為高電平時,LED燈亮。
在main函數中編寫如下代碼進行點燈。
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/*設置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}
最終效果為紅、綠、藍三個燈依次亮滅。
本次分享就到此為止,感謝大家的觀看,我也會盡力更新這個系列的!
————————————————
版權聲明:
本文為RT-Thread論壇用戶「goldengrandpa」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:
https://club.rt-thread.org/ask/article/09dffc578f32d85d.html
你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進RT-Thread官方微信交流群!
點擊閱讀原文回看開發者大會
-
RT-Thread
+關注
關注
31文章
1305瀏覽量
40387
原文標題:基于RoboMasterC型開發板的RT-Thread使用分享(一)
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
RT-Thread上CAN實踐
![<b class='flag-5'>RT-Thread</b>上CAN實踐](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
基于恩智浦FRDM-MCXA153開發板實現RT-Thread的ADC驅動
![基于恩智浦FRDM-MCXA153<b class='flag-5'>開發板</b>實現<b class='flag-5'>RT-Thread</b>的ADC驅動](https://file1.elecfans.com/web1/M00/F4/1C/wKgaoWckWo-AQbL9AAA5PPdVJ0k817.png)
開源共生 商業共贏 | RT-Thread 2024開發者大會報名啟動!
![開源共生 商業共贏 | <b class='flag-5'>RT-Thread</b> 2024<b class='flag-5'>開發</b>者大會報名啟動!](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
NXP FRDM-MCXC444開發板在RT-Thread環境下的上手過程
![NXP FRDM-MCXC444<b class='flag-5'>開發板</b>在<b class='flag-5'>RT-Thread</b>環境下的上手過程](https://file1.elecfans.com/web2/M00/09/55/wKgZomcJ8qyABY71AABFpko_594666.png)
【QEMU系列】不用開發板運行RT-Thread指南-ARM架構
![【QEMU系列】不用<b class='flag-5'>開發板</b>運行<b class='flag-5'>RT-Thread</b>指南-ARM架構](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
2024 RT-Thread全球巡回 線下培訓火熱來襲!
![2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓火熱來襲!](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
開發者分享 | 基于先楫RT-Thread BSP,使用CLion開發應用
![<b class='flag-5'>開發</b>者分享 | 基于先楫<b class='flag-5'>RT-Thread</b> BSP,使用CLion<b class='flag-5'>開發</b>應用](https://file.elecfans.com/web2/M00/37/D7/pYYBAGI9l9uAOwALAAAmFmqVYdg094.png)
RT-Thread西安社區舉辦首次例會,誠邀每一位開發者參與!
![<b class='flag-5'>RT-Thread</b>西安社區舉辦首次例會,誠邀每<b class='flag-5'>一</b>位<b class='flag-5'>開發</b>者參與!](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
如何在PSoC62 Evaluation kit開發板上運行RT-Thread呢?
![如何在PSoC62 Evaluation kit<b class='flag-5'>開發板</b>上運行<b class='flag-5'>RT-Thread</b>呢?](https://file1.elecfans.com/web2/M00/C1/40/wKgZomXdTiCALqQxAABSO4fFgn4963.jpg)
RT-Thread設備驅動開發指南基礎篇—以先楫bsp的hwtimer設備為例
![<b class='flag-5'>RT-Thread</b>設備驅動<b class='flag-5'>開發</b>指南基礎篇—以先楫bsp的hwtimer設備為例](https://file1.elecfans.com/web2/M00/C1/40/wKgaomXUXOGAMhesAAAk3OUcwHA076.png)
移植RT-THREAD在stm32開發板上,使用rt_kprintf不能正常打印的原因是什么?怎么解決?
先楫 RT-Thread BSP v1.4.0 正式發布
![先楫 <b class='flag-5'>RT-Thread</b> BSP v1.4.0 正式發布](https://file.elecfans.com/web2/M00/37/D7/pYYBAGI9l9uAOwALAAAmFmqVYdg094.png)
評論