你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32一个比较尴尬的地方,为何会这样

[复制链接]
wsnfly~ 提问时间:2015-3-13 14:50 /
定时器设置完了,中断函数也OK得
触发时间为1毫秒

void        TIM1_UP_TIM16_IRQHandler(void)//此为中断函数
        {
               
        if(TIM_GetITStatus(TIM1, TIM_IT_Update))
        {
                tim[0]++;
        }               
        TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除TIMx的中断待处理位               
        }



那么问题来了
                tim[0] = 0;
                while(tim[ 0 ] < 1000);
按理说程序在这个位置会延迟1秒钟
可是事实这样会是无限循环

当然,解决这个问题的办法是
                tim[0] = 0;
                while(tim[ 0 ] < 1000)delay_us(1);
在循环里面加一小段函数。这样就能延迟1秒 并且会跳出循环。

我不知道为什么会这样,试过STM8没有这样的问题。
请问这是硬件的原因吗,有哪位能细说一下



收藏 评论33 发布时间:2015-3-13 14:50

举报

33个回答
wsnfly~ 回答时间:2015-3-13 22:57:57
说不定 发表于 2015-3-13 15:19
跟硬件一点关系都没有,首先看你定义的  tim[0]是什么类型的,如果  tim[0]>1000又是在程序哪儿清0的昵,最 ...

u32类型,清零是在while语句的上一句就清零,虽然说我已经知道是什么原因了,不过还是的发出来供大家参考一下
wsnfly~ 回答时间:2015-3-17 07:33:59
moyanming2013 发表于 2015-3-16 22:13
我有时测试也会出现一个全局的在定时器中进行加操作的变量,无法在功能程序中获取想要的值。即使volatile ...

如果加上volatile 还不行的话该考虑一下是不是比这个定时器的优先级要低于其他定时器,导致不能及时进去中断
wsnfly~ 回答时间:2015-3-16 07:39:57
左岸右岸 发表于 2015-3-15 14:07
怎么我也觉得就该无限循环?跟大家的水平差距这么大么

tim【0】会在定时器中断中被过1毫秒被加1,按逻辑是在tim[0]被清零,然后进入循环,然后就等待tim [ 0 ]被加到1000时会跳出循环,结果在循环中tim[ 0 ]并没有被累加。
foxglove 回答时间:2015-3-13 14:57:45
这个问题需要注意
Mandelbrot_Set 回答时间:2015-3-13 15:09:22
目测纯软件问题
说不定 回答时间:2015-3-13 15:19:45
跟硬件一点关系都没有,首先看你定义的  tim[0]是什么类型的,如果  tim[0]>1000又是在程序哪儿清0的昵,最好仿真看  tim[0]的值的变化 才能找到原因。
kqh1120 回答时间:2015-3-13 16:43:40
tim[0]是什么类型的,,tim最大值为多少。是不是超出范围了 14.gif
大浪10010 回答时间:2015-3-13 20:11:09
学习一下,,,
埃斯提爱慕 回答时间:2015-3-13 22:16:51
提示: 作者被禁止或删除 内容自动屏蔽
wsnfly~ 回答时间:2015-3-13 22:56:27
zfz0122 发表于 2015-3-13 16:43
tim[0]是什么类型的,,tim最大值为多少。是不是超出范围了

u32类型的
_ilikerome_ 回答时间:2015-3-14 08:47:58
没看明白是什么意思
kqh1120 回答时间:2015-3-14 08:51:52
wsnfly~ 发表于 2015-3-13 22:57
u32类型,清零是在while语句的上一句就清零,虽然说我已经知道是什么原因了,不过还是的发出来供大家参考 ...

是什么原因啊
wamcncn 回答时间:2015-3-14 09:46:13
tim[0]++?不明白
飞翔的起点 回答时间:2015-3-14 10:19:32
第一,楼主问题不完整。第二,绝对是软件问题
废鱼 回答时间:2015-3-14 11:07:13
飞翔的起点 发表于 2015-3-14 10:19
第一,楼主问题不完整。第二,绝对是软件问题

这不是软件问题,是设计人员程序书写的问题。
wyxy163@126.com 回答时间:2015-3-14 13:36:30
提示: 作者被禁止或删除 内容自动屏蔽
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版