stm32f407移植rtthread,rt_thread_delay 延时不准确

本文分析了在STM32F4开发中,使用不当的SysTickdelay_init可能导致的8倍延时问题,以及如何正确配置HSE时钟和Systick初始化。建议检查并修正HSE值设置和SysTick源配置以确保准确的时间间隔。

可能的原因,

1.使用了裸机的delay_init函数

这个函数里面可能包含了以下代码
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

然后会导致以下现象:
执行 rt_thread_delay(1000); 实际延时为8秒

正确的做法是不需要做此配置,或者配置为:

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

2.HSE 时钟晶振设置不正确

网上的部分代码示例将HSE晶振设置为25M,这个时候如果自己的开发板上的外部晶振为8M,就需要手动修改配置

默认配置25M如下图:
在这里插入图片描述
在这里插入图片描述

修改为8M,

1.打开stm32f4xx.h,将上图的25000000改为8000000

### STM32 RT-Thread 移植教程 将 RT-Thread 操作系统移植STM32 微控制器上是一个多步骤的过程,涉及硬件配置、软件环境搭建以及代码实现。以下是详细的移植过程: #### 1. 硬件与开发环境准备 在开始移植之前,需要确保以下工具和资源已经准备好: - STM32CubeMX 工具:用于生成初始化代码。 - Keil MDK 或 IAR Embedded Workbench:用于编译和调试代码。 - RT-Thread 软件包:可以通过 CubeMX 添加支持。 通过在 CubeMX 中添加 RT-Thread Nano 软件包地址(https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc),可以方便地生成包含 RT-Thread 配置的初始化代码[^2]。 #### 2. 使用 STM32CubeMX 配置项目 在 STM32CubeMX 中完成以下配置: - 选择目标 MCU 型号(如 STM32F103C8)。 - 配置时钟树以确保系统时钟正确。 - 启用必要的外设(如 GPIO、USART、TIM 等)。 - 在“Middleware”选项中启用 RT-Thread Nano,并根据需求调整其配置。 生成代码后,确保代码结构符合 RT-Thread 的要求,包括 `rtconfig.h` 和其他相关文件的生成[^1]。 #### 3. 修改 RT-Thread 配置 在生成的代码基础上,需要对 RT-Thread 进行进一步配置: - 编辑 `rtthread_config.h` 文件以调整内核参数,例如线程栈大小、定时器精度等。 - 如果遇到定时器相关问题,可以通过修改 `timer.c` 文件中的 `RT_TIMER_THREAD_STACK_SIZE` 参数来解决,例如将其设置为 2048[^3]。 #### 4. 实现基本功能 为了验证 RT-Thread移植是否成功,可以实现一个简单的功能,例如点亮 LED。以下是一个使用静态栈方式实现的示例代码[^4]: ```c #include "board.h" // 声明并申请栈空间 ALIGN(RT_ALIGN_SIZE) static rt_uint8_t rt_led_link_thread_stack[512]; // 定义线程控制块 static struct rt_thread led_thread; // 定义线程入口函数 static void led_link_thread_entry(void* parameter) { while (1) { LED_ON; rt_thread_delay(1000); // 延时 1 秒 LED_OFF; rt_thread_delay(1000); // 延时 1 秒 } } int main(void) { // 初始化线程 rt_thread_init(&led_thread, "led_Link", led_link_thread_entry, RT_NULL, &rt_led_link_thread_stack[0], sizeof(rt_led_link_thread_stack), 3, 20); // 启动线程 rt_thread_startup(&led_thread); return 0; } ``` #### 5. 编译与调试 将生成的代码导入到 Keil 或 IAR 中进行编译。确保所有库文件路径正确,并检查是否有任何编译错误或警告。通过调试工具(如 ST-Link)下载程序到目标板,并验证其运行效果。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值