问题标签 [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.
texas-instruments - CCS:MPU6050 Sensorlib
我正在使用 TM4C123G 板,我按照“SW-TM4C-SENSORLIB-UG-1.1.pdf”中给出的示例连接 MPU6050,但在生成 I2C 通信时遇到了麻烦。这个例子是否足够,或者我应该额外线路进行通信。如果是,那么您能否提及我必须做出的更改。
arm - 平均 N 个浮点样本的 ARM CMSIS DSP 吞吐量
我编写了一个简单的 C 代码来计算float
数组中存在的 N 的平均值。我得到每个浮点数 10.5 ClockCyles 作为大 N 的吞吐量。
arm_mean_f32()
实际上性能更差。
这不是太多的CCs/float吗?
3 操作
- 从内存加载
- 加载值的累积
- 指针增量
可以并行发生。
ARM Cortex M4F 会这样做吗?
该项目在具有 ARM Cortex M4F 的飞思卡尔 K24 处理器的定制板上运行。
rtos - FreeRTOS 和 CMSIS-RTX 之间的区别
FreeRTOS 和 CMSIS-RTOS 有什么区别?谁能解释这两个 RTOS 的相似之处或不同之处?
c - 在 core_cm4.h 为什么会有像 ((uint32_t)(int32_t)IRQn) 这样的转换?
在 core_cm4.h 的以下代码中,为什么会有双重转换((uint32_t)(int32_t)IRQn)
?
例如在以下函数中:
这样做的目的是什么?
memory-management - CMSIS DSP 查找表占用了我的内存
CMSIS(Cortex 微控制器软件接口标准)遗憾地带有大量查找表。只要我使用它的一个 DSP 功能,它就会包含所有查找表 (~200KB),甚至包括我不需要的那些。我想知道是否有办法告诉 gcc 或 ln 摆脱这些未使用的表。“arm-eabi-strip --strip-unneeded file.elf”似乎没有做任何事情。我不知道如何在不手动删除所有这些数组的情况下处理这个问题。
stm32 - STM32F4 USART1 发送垃圾
将字符从 STM32F411 发送到 PC 时出现问题,它会读入垃圾,但是当我执行相反的操作时,MCU 会正确读取发送的字符。
我执行以下操作:
- 启用 GPIOA 时钟并配置引脚 9 和 10 备用功能。
- 启用 USART1,保留 M(消息长度)、停止位、DMA 的默认值
- 设置
USARTDIV
为在 16Mhz (HSI) 时产生 9600 波特* - 配置 USART 以发送空闲帧作为第一次传输
* 我也尝试过 100MhzAPB2
总线频率,结果相同。
配置 USART
之后,我尝试接受具有以下配置的RealTerm2.0a
字符:9600 8N1 None
字符通过以下代码发送:
更新 1
切换到具有完全相同配置的 USART2 可以解决问题,并且可以从串行终端恢复文本,但是这个问题没有得到解答“为什么 USART1 不能按预期工作?”
c++ - STM32 NVIC ADC中断未触发
我有一个 STM32F411VET,我想在 ADC 转换完成后触发中断。文档说明如下:
在单次转换模式下,ADC 进行一次转换。此模式通过以下任一方式以 CONT 位为 0 启动:
- 设置 ADC_CR2 寄存器中的 SWSTART 位(仅适用于常规通道) 选定通道的转换完成后:
如果转换了常规频道:
- 转换后的数据存入 16 位 ADC_DR 寄存器
- EOC(转换结束)标志被设置
- 如果 EOCIE 位置位,则产生中断
然后 ADC 停止。
因此,我有以下代码:
启用中断
配置 ADC
中断处理程序
在调试模式或直接从ADC1->DR
寄存器读取时,我得到了很好的结果。
让我担心的是我无法在 uVision5(我正在使用的 IDE)中调试中断处理程序。
问题是中断处理程序没有被执行,我不知道如何正确调试它。
感谢大家的帮助。
c - CMSIS-RTOS osMessageGet 函数
我一直在开发基于 CMSIS-RTOS 的软件,但函数 osMessageGet 有问题。我的软件由四个 RTOS 任务组成,其中两个通过 osMessageQueue 和 osPool 交换数据。一个任务 (Task_100ms) 是生产者,第二个任务 (Task_200ms) 是消费者。
Task_100ms 从 CAN 总线接收数据并创建包含接收数据的结构。生产者使用函数 osPoolAlloc 在池 (flash_pool) 上分配内存,并接收指向已分配内存的指针。Producer 使用这个指针将交换结构的内容复制到池中的内存块中,并使用函数 osMessagePut 将该指针的副本放入队列(flash_queue)中(请参见下面的put_program_chunk函数代码)。
Task_200ms 尝试使用 osMessageGet 函数从 flash_queue 检索指针(请参阅下面的program_chunk函数代码)。只要队列是空的,消费者就会等待并且一切正常。然后 Task_100ms 将第一个指针放在 flash_queue 上。Task_200ms 调用 osMessageGet 函数,这会导致 uC 重置,以防 osMessageGet 的超时设置为 osWaitForever。如果 osMessageGet 的超时设置为 0,则不会调用软件重置。但是在这两种情况下(超时等于 0 或 osWaitForever),当我单步执行 Eclipse 中的代码时,我无法在 osMessageGet 函数调用之后立即实现以下语句。
任何人都可以给我任何建议,我的问题的原因可能是什么?如果需要,我可以将整个源代码发送给您。在此先感谢您的任何建议。
stm32 - 无法使用 HAL_UART_Receive_IT 通过 UART 发送数据
我在发现板上使用 stm32f4 并在其上运行 freertos。
刚开始使用 stm32 控制器并尝试使用 UART 进行数据传输。Printf
基于HAL_UART_Transmit
完美的作品,但接收数据不起作用。
根据众多教程,它应该非常简单。我在 Stm32CubeMX 中创建一个项目,添加所有必要的东西(freertos、USART3、NVIC),启用 USART3 全局中断并生成代码。
我正在尝试HAL_UART_Receive_IT(&huart3, &rx_char, 1);
在任务中添加或类似的东西,但它什么也没做。我想它飞得很快,不等待从终端发送字符。
我在这里想念什么?