历史上的今天
返回首页

历史上的今天

今天是:2025年02月17日(星期一)

正在发生

2020年02月17日 | 用 IAR 开发 STM8 时,简单软件延时不起作用的原因

2020-02-17 来源:eefocus

近期有幸接手了前任工程师遗留的项目,MCU 选择的是 STM8L151XX,开发工具使用的是 IAR 。打开祖传代码后,通读了一遍,就用ST-Link烧录进去跑程序,结果发现和预想的效果不太一致,尤其是初始化LED闪烁的部分。


代码中LED闪烁原理比较简单,就是传统的更改GPIO电平,再软件延时几百毫秒,然后再改变GPIO电平的方法,这种传统的操作在学单片机第一课就已经开始使用了,按理说不应该出差错。在确认过晶振频率,分频系数,时间周期和机器周期的关系之后,粗略算出的延时函数和代码中的基本一致,所以排除了算数上的错误。延时函数大概是这样的 ↓


void delay_ms(u16 t)

{

  u16 i;

  u16 j; 

  for(i=0;i  {

    for(j=0;j<400;j++);

  }

    

}


刚好手中有ST-Link,不妨就仿真看一下,是不是延时函数写的不对。在延时函数的前后分别打上断点,把延时增加到5秒左右,方便观察,开启仿真后发现,断点之间执行的特别快,一眨眼就跳过去了。。。索性在延时的时间后面加几个零,没想到也是瞬间就跳过去了,真是活久见!!!


网络是最好的老师,在翻过十几篇帖子之后,我基本确定了问题的所在之处! IAR 编译时的优化程度不能选择太高,否则编译器认为这段代码是无用的,就给优化掉了。。。具体设置路径如下:


在工程上点右键,选择Options ——> C/C++ compiler ——> Optimizations ——> Level 中选择 None(之前是High)

重新编译过后,再把程序烧录进去,延时函数果然生效了,LED 又按照既定的方法闪烁起来,其他功能也恢复正常了。

推荐阅读

史海拾趣

问答坊 | AI 解惑

pxa270 休眠唤醒的问题

各位论坛大虾,小弟在调试休眠,现在碰到一个很郁闷的问题,现在的机器按下powerbutton键后用调试信息跟踪能够到    XllpPmEnterSleep(&m_SleepData.sleepParameters);这个函数,并且测试system_en脚也变低了,在sleep 模式下, 但是我 ...…

查看全部问答>

SC_CreateMutex问题

我现在把一个5.0的BSP移到6.0上,但是5.0在OAL时有用到SC_CreateMutex。6.0下现在不能用了,有什么办法能调用SC_CreateMutex吗?…

查看全部问答>

在PC端可以操作SQLCE的数据库吗?

如题,我想在PC端操作sqlce的数据库。sdf的。 我用的是.net2.0…

查看全部问答>

求助!小弟要开发一个读取液晶显示开关程序?

问题是这样的,有一台显示器(液晶电视)每天会有一段时间,因为没有输入信号而进入待机状态。有了输入信号就会开液晶。 我需要知道液晶是待机还是开机。 我的想法是能不能通过读取 dvi线上某个数值或者装态,获取液晶状态。 请大家 仙人指路。…

查看全部问答>

第一次编写wince程序就遇到问题,请大家帮助,工程已上传。

昨天我在vc2005中编写了一段代码,我想看下,wince是不是可以用mfc编,结果编译过了,就是运行时说我出错。 完整的vc2005工程在附件中,请大家帮帮我,谢谢。 还有个问题也是在vc2005中,我先是在vc6中编写了一段mfc的程序然后放到vc2005中编译, ...…

查看全部问答>

msdn中的流驱动程序编程问题

在pb5.0中,做流驱动程序的的第6步之后,进入windows ce stream wizard界面是在哪找的 我怎么就找不到呢!!! 请知情的大哥大姐提示一下~~~~ 多谢 ~~~·…

查看全部问答>

wince的基础知识?

各位大虾:安装vs2005后,wince5.0就安装到系统中了吗?在哪里可以找到啊?谢谢!…

查看全部问答>

请教stm32f103vb(定时器复用问题)!!!

请教 stm32f103vb   1:是不是每个 每个 IO  都可以 设置 为 外部 中断 输入 2:如果用了T3定时器 CHI CH2 用与 正交 编码 输入   CH3 CH4用PWM 输出 (或输入捕获)是否会冲突…

查看全部问答>

LPC11U00开发板资料

NXP最近推出了11u00系列芯片,增加了USB2.0模块,感觉非常不错,下面附一款开发资料和代码   [ 本帖最后由 zhaojun_xf 于 2011-8-9 14:20 编辑 ]…

查看全部问答>

【设计工具】Quartus II 中文教程

目录   前言..................................................................................................................................................iii文件编制约定.................................................. ...…

查看全部问答>