0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

新版IAR调试查看寄存器问题 STM8代码大小优化问题

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-07 16:13 次阅读

今天写两个后台问的较多的问题,如标题所示:

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都行) -> CPURegister右键 -> ViewGroup,此时你就可以选择了,如下图:

相信到这里,你不可能不会了。

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.将标准外设库修改成直接操作寄存器

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

在线调试查看寄存器方法看上一章节内容。本文内容就此结束,希望对你有帮助!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5334

    浏览量

    120208
  • STM8
    +关注

    关注

    18

    文章

    392

    浏览量

    56765
  • 标准外设库
    +关注

    关注

    0

    文章

    16

    浏览量

    3539
收藏 人收藏

    评论

    相关推荐

    寄存器有哪几种?可以实现什么功能?

    寄存器是计算机中最基本的寄存器类型,用于存储数据和指令。它们通常具有相同的大小和功能,可以用于执行各种操作。通用寄存器的数量和大小因计算机架
    的头像 发表于 07-12 10:32 1035次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1281次阅读

    在VSCODE中打开了OPENOCD ,可以进行DEBUG调试,如何查看寄存器的值?

    在VSCODE 中打开了 OPENOCD ,可以进行DEBUG 调试,但是如何查看 某个寄存器 的值呢。
    发表于 06-21 08:07

    用的IAR For STM8新版本3.10.2 ,编译提示错误的原因?

    用的IAR For STM8新版本3.10.2 ,编译提示错误Error[Li005]: no definition for \"main\" [referenced from cstartup.o(dlstm
    发表于 04-30 08:00

    带输出寄存器的汽车类8位移位寄存器SN74LV8T594-Q1数据表

    电子发烧友网站提供《带输出寄存器的汽车类8位移位寄存器SN74LV8T594-Q1数据表.pdf》资料免费下载
    发表于 04-29 10:07 0次下载
    带输出<b class='flag-5'>寄存器</b>的汽车类<b class='flag-5'>8</b>位移位<b class='flag-5'>寄存器</b>SN74LV<b class='flag-5'>8</b>T594-Q1数据表

    IAR FOR STM8 v3.10.4调试时软件崩溃的原因?

    环境:ide是iar for stm8 v3.10.4 版本, 芯片stm8L051,调试器是Risym 的ST-LINK v2, swim连接 部分程序如下: void main(
    发表于 04-26 08:29

    安装最新版IAR for stm8无法烧写程序怎么解决?

    我有两台电脑分别安装win7和win10,并都安装了最新版IAR for stm8(V3.10)。win10系统那台没有任何问题,win7那台无法烧写程序一直提示“Failed
    发表于 04-22 07:49

    STM8IAR编辑调用串口2函数报错的原因?

    新手入门STM8,资料是用众拳的,,新手求助,为什么STM8使用IAR编辑,程序是网上众拳的教程,为什么修改不了库函数的c文件,文件在编辑
    发表于 04-17 08:23

    请问STM8中的RAM会像51系列一样有一段初始化清零代码吗?

    最近在做防止复位脚复位的程序,想利用RAM的保存数据特性做一段复位恢复,STM8 中的RAM会像51系列一样有一段初始化清零代码吗?
    发表于 04-16 06:49

    STVP烧录stm8的hex文件不运行,但在IAR for stm8调试正常,为什么?

    请教各位高手一个问题,我用IAR for stm8调试模式下一切正常的程序,但是变成release模式下生成hex文件以后,用STVP烧录却不能运行,应该说是大部分时候不能运行,偶尔极少数情况下
    发表于 04-10 08:17

    新装IAR准备上手stm8,安装完后,licence弹出安装stm8库,为什么?

    新装IAR准备上手stm8,安装完后,licence弹出安装stm8库,可是安装失败。提示没有许可。请问如何安装解决? 查看了licence,里面是有STM
    发表于 04-09 06:49

    IAR FOR ARM和IAR FOR STM8无法共存怎么解决?

    IAR FOR ARM和IAR FOR STM8无法共存, 先用的ARM开发STM32,最近有个STM8的要开发。 电脑:WIN10 64位。 ARM版本:EWARM-CD-8321
    发表于 04-07 07:39

    AFE模拟前端寄存器读取操作

    AFE模拟前端寄存器读取操作是电子系统设计和调试中不可或缺的一环。寄存器作为AFE模拟前端中的重要组成部分,存储着各种配置参数和状态信息,通过读取这些寄存器,工程师可以了解AFE的工作
    的头像 发表于 03-15 15:50 694次阅读

    如何根据自己设计中的寄存器配置总线定义来生成一套寄存器配置模版

    无论是FPGA还是ASIC,系统设计中总会存在配置寄存器总线的使用,我们会将各种功能、调试寄存器挂载在寄存器总线上使用。
    的头像 发表于 03-04 13:56 1129次阅读
    如何根据自己设计中的<b class='flag-5'>寄存器</b>配置总线定义来生成一套<b class='flag-5'>寄存器</b>配置模版

    arm三个寄存器在gdb调试时的作用

    arm三个寄存器在gdb调试时作用  ARM是一种广泛使用的微处理架构,它广泛应用于移动设备、嵌入式系统和其他高性能计算设备。当我们在使用gdb(GNU调试器
    的头像 发表于 01-31 10:44 966次阅读