FreeRTOS之中断管理机制综合

482 阅读1分钟

1 中断管理机制(在中断中借助信号量与消息队列,传递消息到任务

  • 中断管理实验是在 FreeRTOS 中创建了两个任务分别获取信号量与消息队列,并且定 义了两个按键 KEY1 与 KEY2 的触发方式为中断触发,其触发的中断服务函数则跟裸机一 样,在中断触发的时候通过消息队列将消息传递给任务,任务接收到消息就将信息通过串 口调试助手显示出来。
  • 而且中断管理实验也实现了一个串口的 DMA 传输+空闲中断功能, 当串口接收完不定长的数据之后产生一个空闲中断,在中断中将信号量传递给任务,任务 在收到信号量的时候将串口的数据读取出来并且在串口调试助手中回显

2 外设中断初始化

  • 主函数进行外设中断初始化 image.png image.png

2.1 按键中断EXTI

image.png image.png

2.1.1 按键中断函数(中断触发的时候通过消息队列将消息传递给任务1

  • extern声明 (主函数中已定义信号量与消息队列) image.png
  • 中断处理函数 image.png
  • key1 image.png
  • key2 image.png

2.2 串口中断

  • bsp_debug_usart.h image.png
  • 串口初始化 image.png
  • DMA初始化 image.png image.png
  • 中断处理函数(在中断中将信号量传递给任务2image.png image.png image.png

3 FreeRTOS定义任务1和2

  • 声明extern char RX_BUFF
  • 主函数中定义QueueHandle_t和SemaphoreHandle_t, 其他地方使用要extern声明 image.png
  • Main函数 image.png
  • 创建task1和task2 image.png
  • task1任务主体(队列读取(接收)) image.png
  • task2任务主体(二值信号量读取(接收)) image.png

4 实验现象

image.png