问题标签 [cmsis]
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 - Tiva C TM4C123GXL 接口库
我目前正在参加使用 Tiva C TM4C123GXL LaunchPad 的在线课程 UT.6.02x Embedded Systems - Shape the World。我也在阅读《ARM Cortex-M3 和 Cortex-M4 处理器权威指南》一书作为补充。书中提到了一个名为 CMSIS 的标准库,其中 GPIO 端口的寄存器被实现为一个结构。
图书代码:
其中 _IO 被定义为易失性。
如果我想将 GPIOA CRL 寄存器设置为 0,我可以输入 GPIOA->CRL = 0; 我还可以调用诸如 GPIO_Reset(GPIOA) 之类的函数。
对于课程,教授没有使用这个库,而是包含一个头文件tm4c123gh6pm.h,它分别定义了每个端口的每个寄存器:
班级代码:
这似乎使寄存器操作更加麻烦。
这个头文件是否在这个类以外的其他地方使用过?它是否被视为 CMSIS 的一部分?
这两个文件有什么区别?
cortex-m3 - 用于 Tiva 启动板的 CMSIS UART 驱动程序
我正在尝试使 CMSIS UART 驱动程序示例在我的 Tiva 启动板上工作:https ://www.keil.com/pack/doc/CMSIS/Driver/html/group__usart__interface__gr.html
我的代码如下:
现在我不希望它立即工作,但是我的构建器开始在链接阶段抱怨 Driver_UART0 未定义:
.\Objects\bl.axf:错误:L6218E:未定义符号 Driver_UART0(来自 blinky.o)。
知道我能做些什么来解决这个问题吗?
谢谢,
博通
ecos - eCos 的 STM32Cube CMSIS 层
有谁知道是否有现有的 CMSIS 层可以将 STM32Cube 与 eCos 一起使用?如果不存在,将 eCos 集成到 STM32Cube 库中有多复杂?
c - UART 接收中断在成功接收数小时后停止触发
我正在使用与 xbee 连接的 STM32f4 发现板来接收来自远程温度传感器的温度数据。使用的代码是 CMIS UART 示例代码。我将接收数据包数据,一次 1 个字节。换句话说,只要接收到每个字节,就会调用 UART 接收中断。一旦我得到完整的数据包,我将复制温度数据。我的 UART 回调函数可以正常工作。但是几个小时后,UART接收中断停止工作,UART无法接收任何东西。但是 UART 传输仍然有效。我正在使用波特率为 115200 的 UART1。我已将 UART 中断优先级设置为 0,并且没有其他中断共享此优先级。所有其他中断优先级均低于 UART。谁能告诉我为什么UART中断停止触发?
arm - 在 Psoc 系统上使用 arm CMSIS
我正在尝试将 arm dsp 内核与赛普拉斯的 Psoc5LP 系统一起使用。我在以下位置找到了示例
主要是 fft 示例是我感兴趣的复制,但我对核心的工作方式有点困惑。我之前在 Xilinx Spartan-6 上使用过 picoblaze 内核,但我从未使用过预制内核,尤其是 Psoc。
我查看了 psoc 系统参考指南并在启动和链接下找到了有关 CMSIS 的信息,但这对我来说并不完全有意义。有人可以指出我正确的方向让我开始吗?我还必须单独下载我需要的所有文件,例如 fft 示例的 arm_math.c(如果是这样,我认为这是我需要的唯一文件?),还是只需要从 arm 下载 CMSIS 4.3 版网站
https://silver.arm.com/browse/CMSIS#
我正在尝试使用这些核心实现光谱通量分析和自相关,我认为它们是一个很好的起点。
提前致谢,
斯卡尔森
arm - ARM CMSIS DSP fft 函数的正确 FFT 长度
我目前正在尝试在我的 cortex m3 PSoC 5lp 芯片上使用 ARM CMSIS DSP 库。
我在使用某些功能时遇到了一些问题,并且我对使用这些功能arm_cfft_q15
(或任何arm_cfft_***
功能)有疑问。
说我有
我跑
这会“就地”进行转换。现在正因为如此,由于 FFT 同时返回实数值和虚数值,它实际上只能返回长度为 512 的 fft,还是 1024 个 FFT 样本中的 512 个?得到 FFT 后我做
哪里fftlength
是 1024。
这会返回MAG_of_fft
,当我绘制它时,它确实似乎是我期望看到的形状,但我不知道如何解释结果,因为我不知道我的 FFT 到底有多长。我告诉它我正在做一个 1024pt FFT,但它似乎只返回一个 512pt FFT,或者只返回 1024pt FFT 的一半,其中之一。
那么我做对了吗?这意味着ADC_samples
数组必须是其中数据的两倍才能获得 1024 pt FFT?然后我可以通过告诉它 FFT 的长度是 1024 来计算使用该 2048 数组的 FFT 的大小?
有人可以向我解释如何正确解释这些函数以及我应该期望的 FFT 长度吗?
ubuntu-12.04 - 打开 .pack 文件 (UNIX)
ARM CMSIS库可以作为 *.pack 文件下载。我怎样才能打开/'解包'(?)它?
似乎曾经有一个函数unpack,该函数已被弃用并委托给gzip。但是,gunzip似乎无法识别扩展名:
zcat似乎读取了文件(它返回一些似乎是内容的格式化输出,见下文),但再次失败并显示以下消息(来自gzip):
(zcat 的一些输出如下所示:)
c++ - CMSIS-RTOS's osMailFree() returns some address instead of osStatus-type value
So I'm using CMSIS-RTOS
mail-queue mechanics with Keil uVision 5.0.5
at STM32F427
microcontroller running at 180MHz
. And every now and then releasing previously allocated mailbox element with osMailFree() resulted in some address being returned instead of osStatus-type value like osOK or osErrorValue or whatever is said in the docs.
This address points to os_mailQ_p_##blahlbah element of a service structure allocated with osMailQDef. This also means it points right beyond the end of an actual data buffer allocated with the same osMailQDef macro.
All of my structures are allocated statically; stack sizes for threads (OS_STKSIZE 600) are also looking pretty enough - anyway, doubling and tripling them gave no effect.
It wouldn't bother me if it's not the fact that early or later my program comes into situation when one thread is unable to allocate a mail element (osMailAlloc() returns 0) while other, waiting thread, is constantly taking osEventTimeout. Seems like all memory blocks are in use - yet I'm honestly releasing it after every use (in wrapping object's destructor, to be sure it is truly released).
What could that mean and where to dig?
stm32 - STM32F427 的 USART1 有时会将第 8 个数据位设置为奇偶校验位
我正在STM32F427
通过以下课程使用 UASRT1:
问题是 USART 时不时地开始忽略实际的第 8 个数据位并将其设置为奇偶校验位(具体来说是奇校验)。最奇怪的是,即使在长时间断电后,有时也会发生这种情况,而无需事先进行任何重新编程或其他操作。例如昨天晚上一切正常,然后第二天早上我来上班,打开设备,它开始按照描述的方式工作。但不限于此,下次重启后可能会随机出现。
使用示波器和用于不同程序的不同 UART-USB 转换器可以清楚地看到这种效果。一旦出现这种效应,甚至可以重新编程微控制器以传输测试数据集。例如,0x00 到 0xFF 无限循环。它不影响问题。改变速度(低至 9600 bps)、每个字的位、奇偶校验控制无济于事 - 即使在重新编程后效果仍然保持不变(例如,导致每个字节真正异常的 2 个奇偶校验位)。或者,至少,根据我的程序的工作流程,UASRT 正在初始化并以通常的顺序使用。
修复它的唯一方法是让 main() 函数执行以下操作:
有了这个,在重新编程和重新启动后,前几个字节(最多 5 个)被传输,但随后一切正常,并通过进一步的重新启动和重新编程继续正常工作。
STM32F427
在相同布局的 2 个物理上不同的板上的2 个不同的 s 上观察到这种效果。它的外观没有规律性。信号极性和电平符合 USART 要求,在调查期间未检测到噪音或接触不良。从我的程序中使用的其他代码(无论是我的还是库代码)的方向来看,UASRT1 似乎没有任何影响,或者它被深深地掩埋了。在项目中CMSIS-OS
用作 RTOS,带有Keil
uVision 5.0.5
.RTX OS
需要帮忙。
arm - 修复了在 KEIL RTX RTOS 上执行任务的时间
我正在使用使用抢先式循环调度程序的 KEIL RTX RTOS。我有一个用于显示数据的 LCD,并且一些任务可以访问此 LCD(还有一些其他任务),这些任务需要固定时间来处理 LCD(例如,第一个任务句柄 LCD 显示其数据 50 秒,50 秒后,第二个任务句柄并显示其数据 10 秒)。我知道我必须使用互斥锁来管理对 LCD 的访问。但我不知道我必须如何管理它的固定时间?LCD 任务处于最低优先级,如果没有任何其他任务要执行,这些任务将被执行以显示消息.