首页 > 其他分享 >freeRTOS之中断管理学习心得

freeRTOS之中断管理学习心得

时间:2022-11-16 17:22:56浏览次数:70  
标签:freeRTOS FREERTOS 中断 ISR 学习心得 内核 函数

移植了FREERTOS后就创建了几个TASK,内核中断和TASK之间一直用共享内存和全局变量进行通讯。这样做对于一个简单的工程来说虽然也没什么,但是随着内容的增加,代码结构会越来越臃肿丑陋,且缺少结构性。而没用到队列通信,信号量同步这些,也实在不能说了解和会用FREERTOS,整个工程也缺少了灵魂。

之所以不用,是因为有几个问题一直没搞明白,不会用也不敢用。

1、如何使用FREERTOS提供的ISR的函数?

2、想要使用FREERTOS提供的ISR的函数, 内核中断的优先级就要小于configMAX_SYSCALL_INTERRUPT_PRIORITY,这样freeRTOS会不会影响内核中断?

网上也查看了一段时间了,但是一直还是不能搞明白。在看了韦老师讲解的终于搞清楚了心中的几个疑惑

全网找到的讲的最清晰的文章 第十一章 中断管理(Interrupt Management) — 韦东山百问网freeRTOS教程 文档 (100ask.net)

(本来放的是CSDN的连接,但是我讨厌CSDN,不想给它做引流,于是把韦老师官网的连接挂上)

1、如何使用FREERTOS提供的ISR的函数?

  这个很简单,答案就是问题2。

  比如说configMAX_SYSCALL_INTERRUPT_PRIORITY = 5,那么UART的nvic_irq_pre_priority = 6,这样就可以在UART的中断服务程序里调用带有ISR的freeRTOS函数了。

void Usart_init()
{
    ...
    /* USART interrupt configuration */
	nvic_irq_enable(UART4_IRQn, 6, 0);
   ...
}
void UART4_IRQHandler(void)
{
	if(usart_flag_get(UART4,USART_INT_RBNEIE)!= RESET)
	{
		usart_flag_clear(UART4,USART_INT_RBNEIE);
	}
        
        xQueueSendToBackFromISR(...);
}

2、想要使用FREERTOS提供的ISR的函数, 内核中断的优先级就要小于configMAX_SYSCALL_INTERRUPT_PRIORITY,这样freeRTOS会不会影响内核中断?

  这里贴上韦老师文章里的这段话就能理解了:

 

   所以我们即使按照1设置了串口的中断等级=6,当来中断时,还是会打断TASK去执行UART中断的。所要注意的只是中断里调用的系统函数都要是xxFromISR()这种的,这种函数不会阻塞。这样就可以用FREERTOS系统函数实现中断与TASK之间的通信和同步了

标签:freeRTOS,FREERTOS,中断,ISR,学习心得,内核,函数
From: https://www.cnblogs.com/xjxcxjx/p/16896612.html

相关文章

  • vs2019 调试 当前不会命中断点 还没有为该文档加载任何符号
     首先调式的时候确定在debug模式下,解决方法:工具-选项-调试-(启用“仅我的代码”)勾去掉。 ......
  • IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
    参考:https://blog.csdn.net/liujiayu2/article/details/73947357一、中断处理的过程根据Intel64andIA-32ArchitecturesSoftwareDeveloper’sManual的介绍,在中断......
  • bochs利用中断调试dos程序
    参考:https://blog.csdn.net/ruyanhai/article/details/7199858本文主要内容:在bochs中运行dos程序,如何在程序的开始处中断使用bochs调试,如何在程序的任意位置下断点......
  • freeRTOS使用:源码下载 & 系统移植的步骤
    1、FreeRTOS的学习资料(1)FreeRTOS的源码下载学习一个操作系统前,首先要下载对应的源码,用于研究和学习。FreeRTOS的源码下载链接如下:​​https://sourceforge.net/projects/fre......
  • 51单片机定时器/计数器中断
    51单片机定时器/计数器中断一、定时器/计数器1-1定时器❤CPU时序相关知识点振荡周期:为单片机提供定时信号的振荡源的周期状态周期:2个振荡周期为1个状态周期,其中振......
  • 51单片机的中断系统 && 外部中断
    51单片机的中断系统&&外部中断中断系统是为使CPU具有外界紧急事件的实时处理能力而设置的。一、中断概念对于单片机来说,中断是指CPU在处理某一事件A时,发生另外一事......
  • AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码
    目录AIR32F103(一)合宙AIR32F103CBT6开发板上手报告AIR32F103(二)Linux环境和LibOpenCM3项目模板AIR32F103(三)Linux环境基于标准外设库的项目模板AIR32F103(四)2......
  • 【单片机/嵌入式】复位中断服务函数与main函数
    一、复位中断服务函数调用main函数在GD32F450ZGT6的启动文件startuup_gd32f450_470.s中可以发现,复位中断服务函数调用了main函数。【疑问】为什么复位中断服务程序里面直......
  • 第十二章学习心得
    12.1块设备I/O缓冲区I/O缓冲的基本原理文件系统使用一系列I/O缓冲区作为块设备的缓存内存。块设备将信息存储在固定大小的块中,每个块都有自己的地址。对操作系统来说,块......
  • freertos-刘火良:内核实现
    定义习惯变量将变量类型缩写当作前缀,如无符号字符uc,字符指针pc,数据结构、任务句柄等用x函数返回值类型缩写当作前缀,如无返回v,私有函数加pri前......