完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
看到文章推荐将系统的左右初始化都放入rt_hw_board_init()内,于是将所有初始化都搬进去,结果由于内部调用了Hal_Delay(),导致卡死,HAL库的时钟源被设置成tiM6,但是TIM6的定时器中断根本进不去,其计数变量自然也不会增加,可是将初始化都放到启动调度之后,也就是main()就一切正常,所以还是不推荐都放入rt_hw_board_init()中。
具体什么原因并不知道 |
|
相关推荐
1个回答
|
|
在 RT-Thread 操作系统中,`rt_hw_board_init()` 函数是系统启动时最先调用的函数之一,用于进行硬件初始化。而 `HAL_Delay()` 函数是 HAL 库中用于实现延时的函数,它依赖于定时器中断来实现延时功能。
你遇到的问题可能是由于以下几个原因导致的: 1. **定时器初始化未完成**:在 `rt_hw_board_init()` 函数中调用 `HAL_Delay()` 时,如果定时器(如 TIM6)还没有被正确初始化,那么定时器中断可能无法正常工作,导致延时无法实现。 2. **中断优先级问题**:在 `rt_hw_board_init()` 函数中调用 `HAL_Delay()` 时,如果中断优先级设置不当,可能会导致定时器中断被其他高优先级的中断抢占,从而无法进入定时器中断处理函数。 3. **中断使能问题**:在 `rt_hw_board_init()` 函数中调用 `HAL_Delay()` 时,如果定时器中断没有被正确使能,那么即使定时器计数器达到预设值,也不会触发中断。 4. **系统时钟配置问题**:如果系统时钟配置不正确,可能会导致定时器计数器的计数速度不符合预期,从而影响延时的准确性。 5. **RT-Thread 调度器未启动**:在 `rt_hw_board_init()` 函数中调用 `HAL_Delay()` 时,如果 RT-Thread 的调度器还没有启动,那么延时函数可能无法正常工作,因为 RT-Thread 的调度器负责管理任务的切换和时间片分配。 为了解决这个问题,你可以尝试以下方法: - **确保定时器初始化**:在调用 `HAL_Delay()` 之前,确保定时器已经被正确初始化。 - **检查中断优先级**:确保定时器中断的优先级设置正确,不会被其他中断抢占。 - **使能定时器中断**:确保定时器中断已经被正确使能。 - **检查系统时钟配置**:确保系统时钟配置正确,以保证定时器计数器的计数速度符合预期。 - **在调度器启动后调用延时函数**:将延时函数的调用放在 `main()` 函数中,确保在 RT-Thread 调度器启动后再调用延时函数。 如果问题仍然存在,建议仔细检查硬件初始化代码和 HAL 库的配置,确保所有必要的初始化都已经完成。 |
|
|
|
只有小组成员才能发言,加入小组>>
155个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
900 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1300 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
930 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1196 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1203 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 22:46 , Processed in 0.418113 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号