问题标签 [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 投票
1 回答
655 浏览

scons - 在 Keil 编译器/链接器中使用 scons

我正在尝试使用带有 scons 的 Keil C51 编译器作为构建系统。

我遇到的最后一个问题是如何以$SOURCES逗号分隔的方式输出到链接器。默认使用空格作为分隔符。

SConstruct的相关部分是

有了这个,我得到:

BL51.exe driver.obj flash.obj 初始化.obj power.obj TO Outfile.omf

我想要的是:

BL51.exe driver.obj,flash.obj,initialization.obj,power.obj TO Outfile.omf

$SOURCES是一个构造变量,我找不到如何更改它打印到命令行的方式。

任何人?

0 投票
1 回答
1030 浏览

arm - Keil arm startup.s 汇编代码

我试图理解 keil 启动汇编代码,因为它初始化最小硬件以使用 C 语言。我被困在这条线上:

上面那一行是什么意思?具体来说,<>符号?请有人帮我弄清楚这个组装说明。

0 投票
1 回答
409 浏览

c - VisualStudio 等效于 Arm #pragma anon_unions

Arm“#pragma anon_unions”允许:

关于在 VisualStudio 中编译此代码的任何想法?

0 投票
3 回答
5549 浏览

c - 使用嵌入式 C 中的指定初始化程序初始化结构。“需要一个表达式”

我正在尝试初始化一个结构,并将值分配给结构变量。

我的结构:

当我尝试声明和初始化变量时,我使用指定的初始化程序:

我将 Keil µVision4 和 ARM C 编译器用于嵌入式项目。编译此代码时,编译器返回错误 #29: Expected an expression。该错误发生在初始化代码的每一行。

我读到这是用 ANSI C99 编写时要走的路,但这在我的情况下不起作用。如何在 ANSI C99 中初始化结构

我知道我可以编写“坏”代码:

但...

有小费吗?


更新:以下代码有效:

但同样,这不是一个特别漂亮的代码或方法。

0 投票
1 回答
1543 浏览

discovery - STM32F4如何从Can1获取第一条消息并将其发送到Can2,Can1和Can2具有不同的速度

我有一个开发套件 STM32f4 发现套件,它有双 Canbus 接口模块。如何从 Can1 获取第一条消息并将其发送到 Can2 , Can1 和 Can2 具有不同的速度

0 投票
1 回答
410 浏览

c - 错误 C28:多个存储类

我正在使用 Keil。我有以下文件“Driver.h”和“Driver.c”。

驱动程序.h

我知道上面的说法是错误的。全局声明时静态更改的含义。但是,我仍然想声明一个变量,它是一个数组。它应该可以被另一个文件使用,并且它应该具有不应该改变值的范围,除非我们改变它。

驱动程序.c


整数状态[5]={0x00,0x00,0x00,0x00,0x00};

错误消息如下所示。

错误 C28:多个存储类

你能帮我么?

0 投票
4 回答
73626 浏览

c - 如何在 C 中将 unsigned char 打印为 2 位十六进制值?

我正在尝试将无符号字符值打印为 2 位十六进制值,但总是将结果作为 4 位十六进制值,不确定我的代码有什么问题。

我期待 2 位十六进制结果为0xC0,但我总是得到0xC0FF

同样,当我尝试使用%bu格式标识符将相同的变量(状态)打印为无符号字符时,我得到的输出为255.

你如何得到两个十六进制字符作为输出?

0 投票
2 回答
2152 浏览

c - 在keil ide中从c源代码调用汇编程序

我在汇编语言中有 8051 微控制器的延迟例程。Ana 我可以在汇编语言程序中使用它们,但我想从 c 语言中使用这些例程,因为这些例程对我来说是完美的延迟。

我在下面发布的延迟代码是 delay.asm 文件...

我将这段代码包含在汇编语言中并简单地使用。但我想从 c 源代码中调用这些例程。

0 投票
1 回答
58 浏览

c - 了解 c 中的 _irol_ 函数

这出现在我的一个代码中。你能解释一下那里的_irol_现在吗?

0 投票
2 回答
12579 浏览

c - Cortex M3 的引导加载程序

我正在使用 mbed 的 LPC 1768 板(使用 cortex M3 cpu),我想在这里实现一些目标,主要是从 SD 卡升级用户应用程序,我正在编写两个程序,首先是引导加载程序/纳米内核,然后一个用户应用程序(helloworld 将作为开始):

  • Bootloader/nano-kernel 在 0x00 地址运行,它会做一些检查并最终抓取 SD 卡上的二进制文件
  • Bootloader/nano-kernel 将在地址 0x9000 复制此二进制文件(稍后可能需要更改,但 bootloader/nano-kernel 不使用此空间,所以应该没问题)
  • 引导加载程序在 0x9000 + 4 处跳转到用户应用程序

SD卡很容易解决,我在跳跃部分有问题。下面是跳转函数的代码。

}

所以我编译了(我使用的是 Keil uvision4)用户应用程序将起始地址更改为 0x9000。如果我对我的板子进行编程(使用 flashmagictool),然后手动跳转(仍然使用 flashmagictool)到 0x9004(0x9000 + 4),用户应用程序将运行,所以我相信编译工作正常,因此用户应用程序可以在 0x9000 运行。

但是如果我运行引导加载程序/纳米内核,这个不会跳转到用户应用程序,不幸的是我无法调试,我不确定发生了什么......我也试过不使用 SD 副本部分,所以我首先对引导加载程序进行编程,基本上只是跳转到 0x9004。然后我对位于 0x9000 的用户应用程序进行编程。如果我重新启动开发板,引导加载程序会运行但不会跳转到用户应用程序。我检查了内存,似乎两个程序(引导加载程序 + 用户应用程序)都是正确的并且在正确的位置。

我确定我在这里遗漏了一些东西,我应该查看任何低级代码吗?我已经阅读了在线文档的音调,并且从我找到的示例中,他们以与我相同的方式跳转到用户代码......非常感谢您的帮助。