首页 > 解决方案 > 50 KHz 的 FreeRTOS ISR

问题描述

我想与配置为在 ARM Cortex M4 上以50KHz产生中断的硬件定时器同步闪烁 LED(切换 GPIO 引脚)。

在我当前的代码中,我将一个 GPIO 引脚切换到一个在 50KHz 外部时钟信号上触发的特定 ISR 处理程序。结果是 GPIO 引脚在 1KHz 到 96KHz 的随机频率下非常不规律地切换。

除了定时器滴答中断(100Hz,优先级最低)、空闲任务和我的特定 ISR 处理程序之外,操作系统没有运行任何其他任务。

否则,这种“切换解决方案”与同一 MCU 上的裸机实现完美配合。所以,我的问题似乎来自我对 FreeRTOS 环境缺乏了解。

  1. 将 LED 切换到 50 KHz 的 FreeRTOS ISR 是否可行?
  2. 我需要在等待 50KHz 中断信号的任务中完成它吗?
  3. 我应该创建一个 50KHz 的定时切换任务并定期与外部时钟信号同步吗?

标签: taskinterrupt-handlingfreertosrtosisr

解决方案


如果您希望 50K 准确(无抖动),则中断的优先级必须等于或高于 configMAX_SYSCALL_INTERRUPT_PRIORITY:https ://www.freertos.org/a00110.html#kernel_priority和https://www.freertos。 org/RTOS-Cortex-M3-M4.html(假设您使用的端口支持中断嵌套)。


推荐阅读