问题标签 [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.
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是一个构造变量,我找不到如何更改它打印到命令行的方式。
任何人?
arm - Keil arm startup.s 汇编代码
我试图理解 keil 启动汇编代码,因为它初始化最小硬件以使用 C 语言。我被困在这条线上:
上面那一行是什么意思?具体来说,<>
符号?请有人帮我弄清楚这个组装说明。
c - VisualStudio 等效于 Arm #pragma anon_unions
Arm“#pragma anon_unions”允许:
关于在 VisualStudio 中编译此代码的任何想法?
c - 使用嵌入式 C 中的指定初始化程序初始化结构。“需要一个表达式”
我正在尝试初始化一个结构,并将值分配给结构变量。
我的结构:
当我尝试声明和初始化变量时,我使用指定的初始化程序:
我将 Keil µVision4 和 ARM C 编译器用于嵌入式项目。编译此代码时,编译器返回错误 #29: Expected an expression。该错误发生在初始化代码的每一行。
我读到这是用 ANSI C99 编写时要走的路,但这在我的情况下不起作用。如何在 ANSI C99 中初始化结构
我知道我可以编写“坏”代码:
但...
有小费吗?
更新:以下代码有效:
但同样,这不是一个特别漂亮的代码或方法。
discovery - STM32F4如何从Can1获取第一条消息并将其发送到Can2,Can1和Can2具有不同的速度
我有一个开发套件 STM32f4 发现套件,它有双 Canbus 接口模块。如何从 Can1 获取第一条消息并将其发送到 Can2 , Can1 和 Can2 具有不同的速度
c - 错误 C28:多个存储类
我正在使用 Keil。我有以下文件“Driver.h”和“Driver.c”。
驱动程序.h
我知道上面的说法是错误的。全局声明时静态更改的含义。但是,我仍然想声明一个变量,它是一个数组。它应该可以被另一个文件使用,并且它应该具有不应该改变值的范围,除非我们改变它。
驱动程序.c
整数状态[5]={0x00,0x00,0x00,0x00,0x00};
错误消息如下所示。
错误 C28:多个存储类
你能帮我么?
c - 如何在 C 中将 unsigned char 打印为 2 位十六进制值?
我正在尝试将无符号字符值打印为 2 位十六进制值,但总是将结果作为 4 位十六进制值,不确定我的代码有什么问题。
我期待 2 位十六进制结果为0xC0
,但我总是得到0xC0FF
。
同样,当我尝试使用%bu
格式标识符将相同的变量(状态)打印为无符号字符时,我得到的输出为255
.
你如何得到两个十六进制字符作为输出?
c - 在keil ide中从c源代码调用汇编程序
我在汇编语言中有 8051 微控制器的延迟例程。Ana 我可以在汇编语言程序中使用它们,但我想从 c 语言中使用这些例程,因为这些例程对我来说是完美的延迟。
我在下面发布的延迟代码是 delay.asm 文件...
我将这段代码包含在汇编语言中并简单地使用。但我想从 c 源代码中调用这些例程。
c - 了解 c 中的 _irol_ 函数
这出现在我的一个代码中。你能解释一下那里的_irol_
现在吗?
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 的用户应用程序进行编程。如果我重新启动开发板,引导加载程序会运行但不会跳转到用户应用程序。我检查了内存,似乎两个程序(引导加载程序 + 用户应用程序)都是正确的并且在正确的位置。
我确定我在这里遗漏了一些东西,我应该查看任何低级代码吗?我已经阅读了在线文档的音调,并且从我找到的示例中,他们以与我相同的方式跳转到用户代码......非常感谢您的帮助。