问题标签 [iar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
embedded - SPI真的需要等待循环吗?
我正在使用带有 IAR Embedded Workbench 5.10 的 msp430f5418。
图形 LCD (ST7565R) 通过 SPI 连接到 MSP..
MSP 主机使用 8 位、MSB 优先模式和 SMCLK。
通常我们必须在使用 SPI 传输字节之前检查忙位,对吗?
但就我而言,即使我在不检查忙位的情况下连续发送数据,它也可以正常工作,并且我可以正确查看显示数据。
任何人都可以解释为什么它工作?
是否需要检查就绪位或是否安全?
谢谢,
c - 8051(8 位)微控制器上的意外位移结果
考虑以下代码:
此代码在 TI CC1111 SoC(具有 8051 内核)上运行,并使用 IAR EW8051 8.10.3 编译/调试,配置为使用 C99 方言,未进行优化。评论中的值是使用 IAR 调试器观察到的(使用模拟器或实际设备的结果相同)。
我希望之后crc16 = crc16 << 8;
,crc16
会有价值0x4300
,而不是0x0000
。
根据 C99 标准(嗯,2005-05-06 年 5 月的草案),第 6.5.7.3-4 节。
对每个操作数执行整数提升。结果的类型是提升的左操作数的类型。如果右操作数的值为负数或大于或等于提升的左操作数的宽度,则行为未定义。
E1 << E2 的结果是 E1 左移 E2 位位置;空出的位用零填充。如果 E1 具有无符号类型,则结果的值为 E1 × 2^E2,比结果类型中可表示的最大值多模一减少。如果 E1 具有带符号类型和非负值,并且 E1 × 2^E2 在结果类型中是可表示的,那么这就是结果值;否则,行为未定义。
我对此的看法是,结果类型应该是一个无符号的 16 位整数,其值为((0x0043)*(2^8)) % 0x10000 == 0x4300
.
我错过了什么吗?谢谢。
bootloader - arm9 引导加载程序 IAR
我正在寻找 Atmel Arm9 的引导加载程序。
Atmel 有一个“安全可靠的引导加载程序”,但它适用于 ARM7,而且已经很老了(不使用最新的 IAR 工具链构建)
我假设这必须在之前完成并且不想重新发明轮子
如果引导加载程序适用于最新的 IAR 嵌入式工作台(版本 6.x),则奖励将是
如果有可用的商业产品 - 那也很好。
佩德罗
linux - 在 Linux 中使用加密狗运行 IAR Embedded Workbench for Arm 的建议
我正在运行 Ubuntu 10.04 和 Wine 1.2。我能够安装 IAR 软件,但无法找到加密狗许可证。无论如何在 Ubuntu 的 Wine 中使用加密狗许可证还是我必须使用 PC 许可证?
提前致谢..
msp430 - MSP430 RTC 校准问题
我正在使用带有 IAR EW 5.10 的 MSP430F5418。
我正在尝试以 1Hz 的频率从 MSP 的第 29 引脚输出 RTCCLK 信号。
当我输出信号时,它是通过端口来的。
但在我重写 RTC 时间后,信号停止了。
我试图重新启用它,但它没有奏效。
谁能告诉我是什么原因??
我正在使用 TI 提供的解决方法代码来设置 RTC 时间。
我的 RTC 配置是:
c - 定时器处于向上模式
我正在MSP430F5418
使用IAR EW 5.10
. 我想在 up 模式下使用 Timer B。
我想使用两个中断。TimerB0(1 毫秒)和 TimerB1(1 秒)。
我的配置是
在 ISR 上,我只是切换了两个引脚。但只有 TB0CCR0 的引脚在切换。我的引脚配置是正确的。谁能告诉我为什么??
c - 将枚举定义转换为 unsigned int
根据这篇 SO 帖子:
C 中枚举的大小是多少?
枚举类型有signed int
类型。
我想将枚举定义从 转换signed int
为unsigned int
。
例如,在我的平台上,anunsigned int
是 32 位宽的。我想创建一个枚举:
我的编译器抱怨上面的定义超出了范围(它适用于 a signed int
)。
如何声明unsigned int
enum
值?
编辑1:
- 首选不扩展到 64 位(因为代码驻留在嵌入式系统中)。
- 由于技能限制,此项目不允许使用 C++。:-(
编辑2:
- 编译器是用于 ARM7 的 IAR Embedded Workbench。
c - ARM cortex m3中的调用堆栈展开
我想创建一个调试工具来帮助我更好地调试我的应用程序。我正在做准系统(没有操作系统)。在 Atmel 的 SAM3 上使用 IAR 嵌入式工作台。
我有一个看门狗定时器,它在超时的情况下调用一个特定的 IRQ(这将在发布时用软件复位代替)。在 IRQ 处理程序中,我想打印(UART)堆栈跟踪,其中确切地发生了看门狗超时。
我查看了网络,但没有找到该功能的任何实现。
任何人都知道如何处理这种事情?
编辑:好的,我设法从堆栈中获取返回地址,所以我知道 WDT 超时发生的确切位置。展开整个堆栈并不像最初看起来那样简单,因为每个函数都会将不同数量的局部变量推入堆栈。
我最终得到的代码是这个(对于其他人,他们可能会觉得它有用)
enums - IAR Embedded Workbench 观察窗口
在 IAR Embedded Workbench 中,监视窗口显示几列(表达式、值、位置、类型)。我想将给定表达式的值视为枚举而不是实际值。意义...
相对于...
这似乎是可能的,因为我可以ucFruit
通过简单地键入 APPLE 作为其值来更改 的值。
有什么建议么?
linker - 在 IAR Embedded Workbench 中自动配置链接器
我正在做一个固件项目,我必须对闪存完整性进行 crc16 检查。
crc 使用 IAR Xlink 链接器计算并保存在闪存的末尾。再次在运行时从代码计算 crc,并与闪存中存储的值进行比较以检查完整性。但是,我们只能在闪存的代码段上计算 crc。每当我们对代码进行一些更改时,它的大小可能会发生变化。我可以自动化我现在手动执行的这个过程吗?
从 .xcl 链接器文件:
在这里,我现在需要更改第二个代码段的结束值,即 0x20A13。我从 .map 文件中得到这个值,即我的代码在闪存内的内存范围。这是我做的第一个改变。
在这里,我需要对代码进行第二次更改:
请帮助自动化此过程!