问题标签 [keil]

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.

0 投票
5 回答
1177 浏览

c - 通过 C 预处理器定义偏移的最佳方法

我想定义一个宏来帮助我自动生成偏移量。像这样的东西:

应生成以下代码:

或者

甚至(不可能只使用 C 预处理器,但谁知道;)

是否可以不运行外部 awk/bash/... 脚本?

我正在使用 Keil C51

0 投票
1 回答
2969 浏览

c - 如何在 Stellaris 中的程序之间跳转

我正在为 Stellaris LM3S1607 芯片开发引导加载程序。我正在使用 Keil MicroVision4 C 编译器。这个想法是创建 2 个独立的固件,一个将更新另一个。在固件 1 中,我下载了固件 2 文件并将其写入地址 0x3200 的闪存。直到这里它正在工作。我还验证了数据是否正确写入闪存。现在我有两个应用程序。一个是我的 uip 引导加载程序,而 seoncd 一个是我的主要项目。我想知道如何从第一个程序跳转到位于 0x3200 的第二个程序。

如果有人可以帮助我跳,那就太好了。谢谢

0 投票
3 回答
23162 浏览

arm - 如何使用uvision(Keil)重新定位向量表并更改cortexm3中的起始地址?

我正在使用 STM32F107 cortex m3 微控制器。我正在为该项目使用 Keil uvision IDE。我有一个在起始位置正常运行的应用程序,即0x0800 0000. 如果我将起始位置更改0x0800 4000为应用程序无法正常工作。我使用此函数对向量表位置进行了更改,如下所示:

即更改SCB->VTOR = 0x8004000为这个位置。

但即使在做了这个中断之后也没有发生。我应该做更多的事情来使这个项目工作吗?

0 投票
1 回答
8833 浏览

debugging - 在调试期间在 IDE 中显示 printf 消息

我们有一个设备,我想使用 printf 函数将消息发送到 IDE 以进行调试。设置:

  • ARM Cortex-M3 设备

  • ULINK2接口

  • uVision4 IDE

我已按照此链接中的说明进行操作,以便能够在“调试(printf)查看器”中查看消息。首先我修改了“retarget.c”文件,将输出重定向到ITM接口:

然后我按照说明在uVision4中配置了IMT: 在此处输入图像描述

该项目编译良好。我将应用程序下载到设备并开始使用 uVision4 调试会话。在系统初始化之后,我尝试在主函数中使用带有简单消息的 printf,但调试查看器仍然为空。我已经在“sendchar”函数中设置了断点,我可以看到所有行都按预期命中。

有没有人成功地将 printf 与 ULINK2 和 uVision4 一起使用?有没有人知道为什么我在调试查看器窗口中看不到任何输出?

更新

我尝试使用现有的 ITM 函数,从而产生更简单的“retarget.c”:

然而,调试查看器中没有显示任何输出。当我跳过 printf 函数调用时,IDE 底部会显示“Trace: Data Overflow”,然后是“Trace: Communication Error”。

0 投票
1 回答
653 浏览

embedded - Keil RealView uvision MDK IDE 中的库重定向文件和低级 I/O 例程

我刚开始在 Keil uvision IDE 中编程。我正在阅读有关Library Target FilesLow Level I/O Routines的官方 Keil 文档。似乎我需要为我的设备实现这两个功能。但是,我不知道如何开始。谁能指出我正确的地方?

我可能正在寻找一个懒惰的借口,但我想应该有流行设备的通用实现文件,开发人员不应该再次编写它们?如果我是对的,我在哪里可以找到这些文件?我正在使用飞思卡尔 MKL05Z32VFM4,一个 ARM Cortex M0+ 设备,如果有帮助的话。

0 投票
1 回答
264 浏览

c - c 中名称相同但大小写变量和函数名称不同

我有一个名为 setlocal 的变量和一个名为 void SetLocal(void) 的函数

我正在使用 C51 keil 编译器构建代码,链接器给出以下错误:

“外部属性不匹配公共”

函数和变量不能使用相同的名称吗?有不同的情况?

0 投票
2 回答
249 浏览

c - 具有不同参数列表的函数指针分配

考虑这个程序:

最终分配是否符合 C90 标准?

Keil C51 v9.06 在没有警告的情况下接受该程序,而 gcc 则抱怨

警告:来自不兼容的指针类型的赋值

我想知道这是否是 Keil 编译器中的错误,或者实际上是一种符合 C90 的处理方式。

更新:根据C99 上的这个答案,相应的演员表是合法的。但是如果你调用函数指针,你会得到未定义的行为。这是否意味着转让也是合法的?

0 投票
1 回答
456 浏览

c++ - 如何通过 c_str() 库 API 使用 C++ 流。

嗨,这是我的代码片段:

这仅用于在屏幕上打印一些字符串。我想要一个函数或方法来打印可以递增的数字,就像我们在 c++ 中所做的那样

0 投票
1 回答
169 浏览

c - 设置第 32 位时的编译器警告

设置第 32 位时,我在代码中有编译器警告。代码有效,但这个警告让我很恼火。

编译器是 Keil C,处理器是 32 位 ARM。代码如下

其中PINSEL0是 32 位寄存器,定义为

并且PINSEL_AD15定义如下:

我收到的警告信息是:整数运算结果超出范围

0 投票
2 回答
2968 浏览

assembly - 用keil uvision 4模拟汇编代码(arm cortex m3)

我使用了这个指南模拟 ARM 代码,它展示了如何模拟汇编代码(arm 7 little endian)并且运行良好。我刚刚将设备从 arm 7 little endian 更改为 arm cortex m3,这些是错误:

我认为问题在于我的项目没有一些启动文件。如果是这种情况,我该如何解决?