历史上的今天
今天是:2025年08月06日(星期三)
2020年08月06日 | 新版IAR调试查看寄存器问题 STM8代码大小优化问题
2020-08-06 来源:elecfans

今天写两个后台问的较多的问题,如标题所示:
1.新版IAR调试查看寄存器问题;
2.STM8代码大小优化问题;
1新版IAR调试查看寄存器问题
从去年上半年开始,IAR将各开发环境逐渐进行了大升级,首先是将EWARM从V7升级到了V8。然后,陆续将EW430、EWAVR等进行了升级。
什么是新版IAR?图标是黑色那种,如EWARM V8.2、 EWSTM8 V3.1。如下图:

老版本IAR,扳手工具图标。如下图:

许多小伙伴安装了新版的IAR,不管是EWARM、EW430还是EWSTM8,都出现了一个问题:调试时,“不能”查看外设寄存器了。
如下面动画,查看了各主菜单,以及View视图各个子菜单,都没有如之前那种可以直接查看寄存器的窗口:

而老版本就会有如下图可以直接查看寄存器的窗口:

说实话,我这一年很多时间都是在写业务逻辑相关的代码,这个功能这一年没去在意过。很多朋友在后台问我,我也没抽时间去研究。
这不前面写了一篇在较小资源上跑一个实时操作系统,后台有朋友问了该如何优化代码,我大概回答了一点可以优化标准外设库为操作寄存器,所以使用到了该功能,所以我就抽时间看了一下这个功能。
好了,不卖关子了,直接说答案吧,操作基本一样,只是新版IAR隐藏了下拉选项。直接看下图你就会明白。
新版IAR调试查看寄存器方法
进入调试模式 -> View -> Registers(1-4都行) -> CPU Register右键 -> View Group,此时你就可以选择了,如下图:

相信到这里,你不可能不会了。
2
STM8代码大小优化问题
因为前面写了一篇文章《一款可以在STM8上运行的实时操作系统Atomthreads》,很多朋友问,像8K的FLASH资源跑一个系统,写点应用程序都用完了。
既然使用STM8可以跑系统,资源的问题肯定有关系。但如果你选定了该芯片,想办法或许是可以解决的呢。
这么说吧,我在STM8S003(1K RAM 8K FALSH)跑四个线程,还有两个队列,没有出现什么问题。

本节我简单说两点比较常见的优化STM8代码的方法:
1.不使用标准外设库自带的断言
在表准外设库里面常看类似如下代码:
assert_param(IS_GPIO_MODE_OK(GPIO_Mode));
assert_param(IS_GPIO_PIN_OK(GPIO_Pin));
这就是库自带用于检查参数的代码,但如果资源有限,可以在最终关闭断言代码。(调试时可以选择代码兼容的大容量芯片调试)。
在stm8s_conf.h中屏蔽即可:

2.将标准外设库修改成直接操作寄存器
使用表准外设库配置,通过在线调试,查看寄存器值,最后直接写寄存器代码即可。类似如下:

在线调试查看寄存器方法看上一章节内容。本文内容就此结束,希望对你有帮助!
史海拾趣
|
我用的是u-boot1.3.2,开发板是s3c2440,所以用的是cpu/arm920t/start.s,如果谁看过这个文件,请帮忙回答下以下几个问题: 1. 127行有如下几句话,请问一下这个0x0是RAM地址还是FLASH地址? ldr r0, =_s ...… 查看全部问答> |
|
最近想做一个PCB板,要用到8*8的点阵,但是protel的库中没有点阵,要自己制一个,但是制成之后与实际的芯片如何一致,如长度,引脚之间的距离等。制成PCB之后如何能实现与实际的点阵大小,长度引脚等特点一致。做了好长时间也没做出来,希望专业人 ...… 查看全部问答> |
|
winavr+avrstudio环境,用c语言,编译时要求makefile,该怎样操作? winavr+avrstudio环境,用c语言,编译时要求makefile。 makefile文件是否只能在winavr中产生,在avrstudio中能否生成? 能否通过设置自动生成? 望高手指点!… 查看全部问答> |
|
大家好,我是新人。最近我想用PIC16F877读MAX6675的转换数值。MAX6675会一次将转换好的16位数据通过SPI输出给单片机。我想请问这样是不是就不能用单片机自带的SPI引脚了,因为缓冲器只能接收8位二进制数。是不是必须用其他的引脚来模拟SPI的时序呢 ...… 查看全部问答> |
|
我用spi方式驱动74hc595, 595接的是共阳数码管 当我使用ckp=1// 空闲时是高电平 cke=1//从低电平到高电平发数据 数码管显示没问题 当我使用ckp=0;//空闲时是低电平 & ...… 查看全部问答> |




