OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4014|回复: 1

USMARTv3.1调试组件 调试Delay函数(中断方式)死机问题

[复制链接]

5

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-11-21
在线时间
11 小时
发表于 2015-6-3 09:20:28 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]/*初始化时钟*/ void Init_SysTick(void) { if(SysTick_Config(SystemCoreClock / 1000)) //注意:3.5库中 SystemFrequency 被 SystemCoreClock 取代。 while(1); } /*延时1ms函数*/ __IO uint32_t TimingDelay; void delay_ms(__IO uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); } /*stm32f10x_it.c中的void SysTick_Handler(void)函数改为*/ extern __IO uint32_t TimingDelay; void SysTick_Handler(void) { if (TimingDelay != 0x00) { TimingDelay--; } } /*用法,延时1秒*/ delay_ms(1000);[/mw_shl_code]
使用该中断方式编写的延时函数,正常使用的时候,延时正常,但是在使用USMART调试时候,串口只打印delay_ms(1000),没有后面的“;”,之后就死机了,请问问题出在哪里,

最佳答案

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

usmart本身就是在中断里面执行的。 而你的delay用的是systick中断,优先级最低。 自然得等待usmart执行完,才可以运行。然后usmart还要等待你的delay完成才能退出,所以,死循环了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-3 09:20:29 | 显示全部楼层
usmart本身就是在中断里面执行的。
而你的delay用的是systick中断,优先级最低。
自然得等待usmart执行完,才可以运行。然后usmart还要等待你的delay完成才能退出,所以,死循环了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 14:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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