完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序功能描述: 学习发烧友出的《STM32F407_FreeRTOS开发手册V1.1.pdf》中的第四章《中断配置和临界段》一节 例程实现的功能如下图:
自己的改动描述: 首先, 在配套例程的基础上,我自己把相关MCU的配置从标准库换成了HA库L。 两个定时器tiM3与TIM5初始化配置都验证过没有问题!!! 单独运行测试都没有问题!!!printf函数单独测试,包 括在OS系统任务中测试输出都没问题!!!!! FreeRTOSConfig.h文件是从原子的配套例程里面直接拖过来用的,在OS的设置上跟原子哥的例程应该是一样的!!!! 那么问题来了: !!!!!在定时器中断服务函数中,printf函数只能执行一次输出然后系统就卡死了!!!!! 查阅了好多地方,都找不到较好的解释。本人刚学RTOS,求大神们帮帮我。 为什么在定时器中断中调用printf函数进行字符串的输出,程序输出一次之后会卡死呢? 在线等 |
|
相关推荐
9个回答
|
|
问题已经找到,我的程序里面,少了void SysTick_Handler(void)这个服务函数。一开始我在 FreeRTOSConfig.h 文件中用
#define xPortSysTickHandler SysTick_Handler 宏定义进行了声明,但是不知道为什么在定时器中断服务函数中printf只能运行一次。把printf函数改为LED闪烁就没有问题。现在在delay的C文件中重新定义了void SysTick_Handler(void)这个函数,把FreeRTOSConfig.h 文件中的宏定义注释掉,运行就OK。至于原因还没有想明白。 |
|
|
|
大神们帮帮我呀!!!跪谢
|
|
|
|
在线等呀!!!
|
|
|
|
|
|
谢谢原子哥,问题已经找到了,一会单独描述一下。
|
|
|
|
谢谢,问题已经找到了,跟滴答定时器中断服务有关系。我会在楼下详细描述。谢谢您的回答。
|
|
|
|
您好,看了您的解决方案,确实如此。但不知其中缘由,您能详细说明一下原因吗?
|
|
|
|
大神啊,能详细解释一下原理吗?不懂。我也需要这个问题不知道怎么处理。
|
|
|
|
照你的方法做了还是解决不了。[C] 纯文本查看 复制代码
//重定义fputc函数 int fputc(int ch, FILE *f){ //while((USART1->SR&0X40)==0);//循环发送,直到发送完毕 // USART1->DR = (u8) ch; //return ch;while(HAL_UART_GetState(&UART1_Handler) == HAL_UART_STATE_BUSY_TX){} HAL_UART_Transmit(&UART1_Handler, (uint8_t *)&ch, 1, 100); return ch;} 把这个改了过后就OK了! |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1073浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:05 , Processed in 1.517070 second(s), Total 66, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号