问题标签 [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.
c - 如何在ARM7中原子地比较和交换?
我想修改一个由 RTOS 中不同任务和 IRQ 上下文共享的全局变量。因此我需要原子地修改这个变量。在我当前的实现中,我一直在使用 enable_irq/disable_irq 函数来原子地修改语句。
我__sync_bool_compare_and_swap
在 GCC文档中找到了该函数作为原子操作的助手。
我当前的工具链是 KEIL MDK,我想切换到如下所示的方法,
如何__sync_bool_compare_and_swap
在 ARMv4 命令集中编写函数(作为内联汇编)?
c++ - 如何抑制第三方源文件中的警告?
我熟悉 GCC 和 Keil 的警告抑制编译指示(它们不同,但用法几乎相同)。对于第三方标头,我可以执行以下操作:
但是我怎样才能抑制来自第三方来源的警告呢?Eclipse+GCC 和 Keil 都会生成它们。我想出的唯一解决方案是制作 whapper .c 文件,其中将包含其他 .c 文件,这似乎是非常肮脏的把戏。
还有其他解决方案吗?
compiler-construction - 将内部版本号添加到软件
有没有办法在代码中添加内部版本号?(我的意思是编译器/ide/其他本身在编译时添加/维护代码中的内部版本号)?我想显示这个内部版本号以供查看(因此代码的可追溯性)。
有谁知道keil软件中怎么用tortoise svn实现的?
assembly - 在正确地址的数据区中找不到定义的字符串
我在 ARM 程序集中为皮质定义了两个段 - M4,一个是代码(只读),另一个是数据(读写)。只读存储器定义为从地址 0x08000000 开始,RW 存储器从 0x20000000 开始。每个段都在其自己的程序集文件中定义,并且标签名称被正确导出/导入。
数据段写为:
在代码中,我使用 LDR R0, =myString 加载字符串的地址
R0 正确地将地址 0x20000000 加载到 R0 中。但是当使用 Keil uVision IDE 内存视图时,该地址处的内存是空的。相反,我在只读区域中的代码后面找到了字符串。那么你能告诉我如何将字符串放在内存中的正确位置吗?
谢谢
c - 通过微控制器进行乐器自动化教学
该项目的前提是:
例如,会有预先录制的吉他音轨。学生将在他的吉他上演奏相同的曲目。我需要比较这两种声音,看看学生弹得好不好。我将首先使用 STM32 微控制器和 Keil uVision 软件进行仿真(用 C 语言编程)。
我知道我将使用使用 DMA 的 ADC,我假设我会快速傅里叶变换波信号,然后以某种方式比较两个频率响应。另外,节奏会不会有问题?我的意思是,每个音符都会精确到毫秒然后进行比较是不合逻辑的
我见过一些方法,如隐马尔可夫模型或 Goertzel 算法,但我不太确定它们做了什么,以及它们是否对项目来说是最优的和容易的。所以我的问题是:是否有最适合的特定算法以及我将如何在我的代码中实现它(因为我还没有真正开始研究代码,到目前为止主要是理论阅读)。
编辑:我昨天发表了类似的帖子,但我的前提太复杂而无法解决,所以我在一个新的前提下发布,更容易完成。我想不要在第一个线程上问,因为它会混淆两个不同的问题。
c++ - 将 uint8_t 与数字进行比较
也许我没有正确理解 C++ 或者它是编译器的错误?
doNothing 没有被调用(如预期的那样),因为 (ab) 的结果在比较操作中被隐式转换为第二个操作数的类型。对于数字,它是带符号的 int。好的。
doNothing 仍然没有被调用,但现在我不明白它的原因!我已经明确地将数字转换为 uint8!
现在 doNothing 终于被调用了,但又是为什么?两个uint8的减法如何返回一个int?
编译器是用于 ARM Cortex M3 的 uVision ARMCC。
c - 从另一个文件访问内联函数
我目前正在使用 keil 编译器在 C 中编码。我面临一个问题,我必须使用内联函数(在我的情况下性能很重要,所以我必须使用它)并且我有一个包含内联函数的文件。这个内联函数在头文件中声明,我尝试从另一个包含头文件的文件中访问。我总是得到:函数调用时未定义的符号错误......
这是说明我的问题的示例:
文件:test.h
文件:test.c
文件:main.c
==> 链接错误:未定义的符号 my_function
我可以改用宏,但是您知道解决我的问题的其他替代方法吗?
c - 函数声明的宏不起作用
我想使用宏来轻松更改函数声明,这就是我现在所拥有的:
当我调用 MYDECLARATION(my_thread); 我收到一个错误:
标识符列表参数只能在函数定义中使用。
我尝试像这样使用##:
但我很确定我会得到 :voidmythread (void)
在我的代码中。你知道怎么做吗?
如果你知道一些关于宏的很好的教程,我也很感兴趣。
回应位掩码评论:
我正在使用 KEIL 编译器,然后我的线程工作如下:
我的电话:
我的定义:
新测试:
这是有效的......所以我想这是在一个不起作用的函数名中使用宏参数的事实......
c - Keil u vision4的乱码
我想编写一个程序来对分数进行排名,这是我的尝试:
但输出是:
请输入学生人数:
123202033
分数:
65
请输入学生人数:
125425152
分数:
56
请输入学生人数:
102323122
分数:
98
请输入学生人数:
102325244
分数:
75
请输入学生人数:
210232322
分数:
45
rank1 21426 98
rank2 23548 75
rank3 -5647 65
rank4 -10752 56
rank5 -7166 45
鼢<br> Dt
?? ?0??????"屪?@?@???<br>9"x噈惄uv0??~"?
initialization - 如何防止 MDK-ARM (Keil) 初始化变量?
这是针对 ADuC ARM (ARM7TDMI) 芯片的……我已经完成了:
并检查了 IRAM2 的 NoInit 复选框......它在启动时仍然被初始化为 0(我不希望这个初始化——我想看看当看门狗咬我时它在做什么)。
我在另一个问题中看到了关于使用的另一篇文章__at__
,但我真的应该这样做吗(我不在乎编译器将它放在哪里,只要它不理会它。OTOH,我在闪存中有一个部分使用该__at__
位,因为我需要在操作期间擦除该页面)?