基于RoboMasterC型开发板的RT-Thread使用分享(一)

发布时间:2024-06-20  

硬件与开发环境介绍


开发板:

本次选用的开发板是大疆创新的RoboMaster开发板C型,其上面采用高性能的STM32F407IG芯片。开发板C型具有如下外设:

用户自定义LED、5V接口、BOOT配置接口、micro USB接口、SWD接口、按键、可配置I/O接口、UART接口、CAN总线接口、PWM接口、DBUS接口、数字摄像头FPC接口、蜂鸣器、电压检测ADC、六轴惯性测量单元和磁力计。

这个也是我可以找到体积最小的板载陀螺仪的开发板,常用的接口也都有,很适合用在控制上。

450571c4-8cae-11ed-bfe3-dac502259ad0.png

软件环境:

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。

教程第一步:点灯

45870d2e-8cae-11ed-bfe3-dac502259ad0.png

本次我们选择UART1作为我们的控制台串口,根据原理图我们得知发送脚为PA9,接收脚为PB7。

因此我们创建项目的选择如下

45ce0652-8cae-11ed-bfe3-dac502259ad0.png

之后我们需要在CubeMX Setting中进行时钟树和引脚的配置。

在 System Core 下选择 RCC 选项,在 RCC mode and Configuration 中的 High Speed

Clock(HSE)下选择 Crystal/Ceramic Resonator

45dd968a-8cae-11ed-bfe3-dac502259ad0.png

之后进行时钟树的配置,我们需要修改红框内的数据如下图

45eac83c-8cae-11ed-bfe3-dac502259ad0.png

配置的根据如下:

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来匹配最大频率。

45fa0ea0-8cae-11ed-bfe3-dac502259ad0.png

后面我们点击顶部的 Pinout & Configuartion,选择 SYS,在 Debug 下拉框中选择 Serial Wire。

46094302-8cae-11ed-bfe3-dac502259ad0.png

随后配置命令行串口所需的UART1引脚,配置哪一个引脚需要根据开发板原理图来设置,用于STM32许多引脚都有复用功能的,所以哪个引脚有什么功能是需要根据硬件来看的。原来创建工程的时候我们就看了原理图发送脚为PA9,接收脚为PB7,所以这里我们就直接设置。

4619801e-8cae-11ed-bfe3-dac502259ad0.png

由于我们这里要进行点灯所以我们来设置一下GPIO。根据原理图我们知道LED_B、LED_G、LED_R引脚分别为PH10、PH11、PH12,我们在CubeMX中进行配置。

46305d16-8cae-11ed-bfe3-dac502259ad0.png

把这三个引脚设置为GPIO_Output。

4641bf02-8cae-11ed-bfe3-dac502259ad0.png

随后点击GENERATE CODE生成代码

根据原理图我们可以发现三个引脚不处于高电平的输出状态,那么三极管的控制端将会被下拉电阻拉为低电平,当 LED_B、LED_G 和 LED_R 处于高电平的输出状态,通过原理图中 1kΩ与 10kΩ的分压后,三极管的基极控制端将变成高电平,故而三级管的控制端电压将变成高电平。因此引脚为高电平时,LED灯亮。

465a9d24-8cae-11ed-bfe3-dac502259ad0.png

在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}


最终效果为红、绿、蓝三个灯依次亮灭。

46806d42-8cae-11ed-bfe3-dac502259ad0.png


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>