Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
技术分享
教程笔记
原创征文
基于RoboMasterC型开发板的RT-Thread使用分享(一)
发布于 2022-12-29 21:12:53 浏览:1293
订阅该版
[tocm] 假期期间打算开一个坑,和大家分享下基于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、六轴惯性测量单元和磁力计。 这个也是我可以找到体积最小的板载陀螺仪的开发板,常用的接口也都有,很适合用在控制上。 ![1.png](https://oss-club.rt-thread.org/uploads/20221229/a419f24ff4b87a643f8f5ed6ab0dba9c.png.webp) #### 软件环境: 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。 ### 教程第一步:点灯 ************ ![2.png](https://oss-club.rt-thread.org/uploads/20221229/29c0773cebbe9c7600009d92080c48fa.png.webp) 本次我们选择UART1作为我们的控制台串口,根据原理图我们得知发送脚为PA9,接收脚为PB7。 因此我们创建项目的选择如下 ![3.png](https://oss-club.rt-thread.org/uploads/20221229/78659210fbec6fbd68fec714ba5dc92e.png) 之后我们需要在CubeMX Setting中进行时钟树和引脚的配置。 在 System Core 下选择 RCC 选项,在 RCC mode and Configuration 中的 High Speed Clock(HSE)下选择 Crystal/Ceramic Resonator ![4.png](https://oss-club.rt-thread.org/uploads/20221229/b9031cb566205edcb7dd6397fcd25c83.png.webp) 之后进行时钟树的配置,我们需要修改红框内的数据如下图 ![5.png](https://oss-club.rt-thread.org/uploads/20221229/cd9edfeefbe00dfbc1848860f97bc548.png.webp) 配置的根据如下: 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来匹配最大频率。 ![6.png](https://oss-club.rt-thread.org/uploads/20221229/24d4c0794aa4cda4a22a5d2017fc4dc7.png) 后面我们点击顶部的 Pinout & Configuartion,选择 SYS,在 Debug 下拉框中选择 Serial Wire。 ![7.png](https://oss-club.rt-thread.org/uploads/20221229/8295b415984afb60f4cfdec539a61bbf.png.webp) 随后配置命令行串口所需的UART1引脚,配置哪一个引脚需要根据开发板原理图来设置,用于STM32许多引脚都有复用功能的,所以哪个引脚有什么功能是需要根据硬件来看的。原来创建工程的时候我们就看了原理图发送脚为PA9,接收脚为PB7,所以这里我们就直接设置。 ![8.png](https://oss-club.rt-thread.org/uploads/20221229/8d124c40a082fc0735db8267a0c29a7a.png.webp) 由于我们这里要进行点灯所以我们来设置一下GPIO。根据原理图我们知道LED_B、LED_G、LED_R引脚分别为PH10、PH11、PH12,我们在CubeMX中进行配置。 ![9.png](https://oss-club.rt-thread.org/uploads/20221229/f55abfebe84a482fdbdc1d7dbb95b93d.png.webp) 把这三个引脚设置为GPIO_Output。 ![10.png](https://oss-club.rt-thread.org/uploads/20221229/c95920817c400d90cfa071799ac75a7f.png.webp) 随后点击GENERATE CODE生成代码 根据原理图我们可以发现三个引脚不处于高电平的输出状态,那么三极管的控制端将会被下拉电阻拉为低电平,当 LED_B、LED_G 和 LED_R 处于高电平的输出状态,通过原理图中 1kΩ与 10kΩ的分压后,三极管的基极控制端将变成高电平,故而三级管的控制端电压将变成高电平。因此引脚为高电平时,LED灯亮。 ![11.png](https://oss-club.rt-thread.org/uploads/20221229/a5867d4438ba257d6f30d3536f786217.png) 在main函数中编写如下代码进行点灯。 ```C /* * Copyright (c) 2006-2022, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2022-12-29 RT-Thread first version */ #include
#include
#include
/* 定义LED引脚 */ #ifndef LED_B_PIN #define LED_B_PIN GET_PIN(H, 10) #endif #ifndef LED_G_PIN #define LED_G_PIN GET_PIN(H, 11) #endif #ifndef LED_R_PIN #define LED_R_PIN GET_PIN(H, 12) #endif int main(void) { /* 设置LED引脚为输出模式 */ rt_pin_mode(LED_B_PIN,PIN_MODE_OUTPUT); rt_pin_mode(LED_G_PIN,PIN_MODE_OUTPUT); rt_pin_mode(LED_R_PIN,PIN_MODE_OUTPUT); int count=1; while(count++) { rt_pin_write(LED_B_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_B_PIN, PIN_LOW); rt_pin_write(LED_G_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_G_PIN, PIN_LOW); rt_pin_write(LED_R_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_R_PIN, PIN_LOW); } return RT_EOK; } ``` 最终效果为红、绿、蓝三个灯依次亮灭。 ![](https://oss-club.rt-thread.org/uploads/20221229/3858ea3abc3a5574401629faab4dac17.png.webp) 本次分享就到此为止,感谢大家的观看,我也会尽力更新这个系列的!
6
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
goldengrandpa
这家伙很懒,什么也没写!
文章
11
回答
19
被采纳
2
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
5
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
张世争
1
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部