OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1100|回复: 7

【急求】FreeRTOS下定时器中断里printf函数运行一次就卡死的问题

[复制链接]

  离线 

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-1-3
在线时间
9 小时
发表于 2018-2-2 10:37:56 | 显示全部楼层 |阅读模式
10金钱
程序功能描述:                      学习正点原子出的《STM32F407_FreeRTOS开发手册V1.1.pdf》中的第四章《中断配置和临界段》一节                      例程实现的功能如下图:
                                                       K1}WTJPYU]3K(_B_9KBA`NR.png

自己的改动描述:
                  首先, 在配套例程的基础上,我自己把相关MCU的配置从标准库换成了HA库L。
                  两个定时器TIM3与TIM5初始化配置都验证过没有问题!!!
                  单独运行测试都没有问题!!!printf函数单独测试,包 括在OS系统任务中测试输出都没问题!!!!!
                  FreeRTOSConfig.h文件是从原子的配套例程里面直接拖过来用的,在OS的设置上跟原子哥的例程应该是一样的!!!!

那么问题来了:
                 !!!!!在定时器中断服务函数中,printf函数只能执行一次输出然后系统就卡死了!!!!!
                 查阅了好多地方,都找不到较好的解释。本人刚学RTOS,求大神们帮帮我。


                 为什么在定时器中断中调用printf函数进行字符串的输出,程序输出一次之后会卡死呢?
                在线等

最佳答案

查看完整内容[请看2#楼]

问题已经找到,我的程序里面,少了void SysTick_Handler(void)这个服务函数。一开始我在 FreeRTOSConfig.h 文件中用 #define xPortSysTickHandler SysTick_Handler 宏定义进行了声明,但是不知道为什么在定时器中断服务函数中printf只能运行一次。把printf函数改为LED闪烁就没有问题。现在在delay的C文件中重新定义了void SysTick_Handler(void)这个函数,把FreeRTOSConfig.h 文件中的宏定义注释掉,运行就OK。至于原因还没有想明 ...
回复

使用道具 举报

  离线 

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-1-3
在线时间
9 小时
 楼主| 发表于 2018-2-2 10:37:57 | 显示全部楼层
问题已经找到,我的程序里面,少了void SysTick_Handler(void)这个服务函数。一开始我在 FreeRTOSConfig.h 文件中用
#define xPortSysTickHandler SysTick_Handler 宏定义进行了声明,但是不知道为什么在定时器中断服务函数中printf只能运行一次。把printf函数改为LED闪烁就没有问题。现在在delay的C文件中重新定义了void SysTick_Handler(void)这个函数,把FreeRTOSConfig.h 文件中的宏定义注释掉,运行就OK。至于原因还没有想明白。
回复

使用道具 举报

  离线 

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-1-3
在线时间
9 小时
 楼主| 发表于 2018-2-2 10:38:28 | 显示全部楼层
大神们帮帮我呀!!!跪谢
回复

使用道具 举报

  离线 

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-1-3
在线时间
9 小时
 楼主| 发表于 2018-2-2 10:38:51 | 显示全部楼层
在线等呀!!!
回复

使用道具 举报

  离线 

12

主题

391

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1213
金钱
1213
注册时间
2017-4-14
在线时间
461 小时
发表于 2018-2-2 10:57:56 | 显示全部楼层
正点原子公众号
本帖最后由 275891381 于 2018-2-2 10:59 编辑

估计重入了吧,中断内用还是加锁吧,要么中断内发个信号,任务内打印
回复

使用道具 举报

  离线 

494

主题

9万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
126779
金钱
126779
注册时间
2010-12-1
在线时间
1099 小时
发表于 2018-2-3 01:34:59 | 显示全部楼层
帮顶
回复

使用道具 举报

  离线 

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-1-3
在线时间
9 小时
 楼主| 发表于 2018-2-3 11:01:34 | 显示全部楼层

谢谢原子哥,问题已经找到了,一会单独描述一下。
回复

使用道具 举报

  离线 

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2018-1-3
在线时间
9 小时
 楼主| 发表于 2018-2-3 11:02:22 | 显示全部楼层
275891381 发表于 2018-2-2 10:57
估计重入了吧,中断内用还是加锁吧,要么中断内发个信号,任务内打印

谢谢,问题已经找到了,跟滴答定时器中断服务有关系。我会在楼下详细描述。谢谢您的回答。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-5-27 13:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */