问题标签 [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.

0 投票
1 回答
176 浏览

texas-instruments - CCS:MPU6050 Sensorlib

我正在使用 TM4C123G 板,我按照“SW-TM4C-SENSORLIB-UG-1.1.pdf”中给出的示例连接 MPU6050,但在生成 I2C 通信时遇到了麻烦。这个例子是否足够,或者我应该额外线路进行通信。如果是,那么您能否提及我必须做出的更改。

0 投票
1 回答
505 浏览

arm - 平均 N 个浮点样本的 ARM CMSIS DSP 吞吐量

我编写了一个简单的 C 代码来计算float数组中存在的 N 的平均值。我得到每个浮点数 10.5 ClockCyles 作为大 N 的吞吐量。

arm_mean_f32()实际上性能更差。

这不是太多的CCs/float吗?

3 操作

  1. 从内存加载
  2. 加载值的累积
  3. 指针增量

可以并行发生。

ARM Cortex M4F 会这样做吗?

该项目在具有 ARM Cortex M4F 的飞思卡尔 K24 处理器的定制板上运行。

0 投票
3 回答
14551 浏览

rtos - FreeRTOS 和 CMSIS-RTX 之间的区别

FreeRTOS 和 CMSIS-RTOS 有什么区别?谁能解释这两个 RTOS 的相似之处或不同之处?

0 投票
3 回答
546 浏览

c - 在 core_cm4.h 为什么会有像 ((uint32_t)(int32_t)IRQn) 这样的转换?

在 core_cm4.h 的以下代码中,为什么会有双重转换((uint32_t)(int32_t)IRQn)

例如在以下函数中:

这样做的目的是什么?

0 投票
1 回答
189 浏览

memory-management - CMSIS DSP 查找表占用了我的内存

CMSIS(Cortex 微控制器软件接口标准)遗憾地带有大量查找表。只要我使用它的一个 DSP 功能,它就会包含所有查找表 (~200KB),甚至包括我不需要的那些。我想知道是否有办法告诉 gcc 或 ln 摆脱这些未使用的表。“arm-eabi-strip --strip-unneeded file.elf”似乎没有做任何事情。我不知道如何在不手动删除所有这些数组的情况下处理这个问题。

0 投票
1 回答
1515 浏览

stm32 - STM32F4 USART1 发送垃圾

将字符从 STM32F411 发送到 PC 时出现问题,它会读入垃圾,但是当我执行相反的操作时,MCU 会正确读取发送的字符。

我执行以下操作:

  1. 启用 GPIOA 时钟并配置引脚 9 和 10 备用功能。
  2. 启用 USART1,保留 M(消息长度)、停止位、DMA 的默认值
  3. 设置USARTDIV为在 16Mhz (HSI) 时产生 9600 波特*
  4. 配置 USART 以发送空闲帧作为第一次传输

* 我也尝试过 100MhzAPB2总线频率,结果相同。

配置 USART

之后,我尝试接受具有以下配置的RealTerm2.0a字符:9600 8N1 None

字符通过以下代码发送:


更新 1

切换到具有完全相同配置的 USART2 可以解决问题,并且可以从串行终端恢复文本,但是这个问题没有得到解答“为什么 USART1 不能按预期工作?”

0 投票
2 回答
1870 浏览

c++ - STM32 NVIC ADC中断未触发

我有一个 STM32F411VET,我想在 ADC 转换完成后触发中断。文档说明如下:

在单次转换模式下,ADC 进行一次转换。此模式通过以下任一方式以 CONT 位为 0 启动:

  • 设置 ADC_CR2 寄存器中的 SWSTART 位(仅适用于常规通道) 选定通道的转换完成后:

如果转换了常规频道:

  • 转换后的数据存入 16 位 ADC_DR 寄存器
  • EOC(转换结束)标志被设置
  • 如果 EOCIE 位置位,则产生中断

然后 ADC 停止。

因此,我有以下代码:

启用中断

配置 ADC

中断处理程序

在调试模式或直接从ADC1->DR寄存器读取时,我得到了很好的结果。

让我担心的是我无法在 uVision5(我正在使用的 IDE)中调试中断处理程序。

问题是中断处理程序没有被执行,我不知道如何正确调试它。


感谢大家的帮助。

0 投票
0 回答
1399 浏览

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 函数调用之后立即实现以下语句。

任何人都可以给我任何建议,我的问题的原因可能是什么?如果需要,我可以将整个源代码发送给您。在此先感谢您的任何建议。

0 投票
0 回答
1312 浏览

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);在任务中添加或类似的东西,但它什么也没做。我想它飞得很快,不等待从终端发送字符。

我在这里想念什么?

0 投票
2 回答
3965 浏览

multithreading - CMSIS RTOS 中的多线程 - STM32 nucleo L053R8

今天我为 STM32 nucleo L053R8 套件开发 RTOS (CMSIS RTOS)。我有与多项任务有关的问题。

我创建了 4 个任务(task_1、task_2、task_3、task_4),但是只有 3 个任务运行。

这是我的代码的一部分:

这是控制台(uart)中的结果:

在此处输入图像描述

当我将任务 4 的堆栈大小从 600 -> 128 更改如下:

然后不要运行任何任务。

实际上我想为我的应用程序创建很多线程,但是这个问题导致难以实现。

你能让我知道问题的根本原因吗?以及如何解决它。

谢谢提前!!