嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
来源:互联网 发布:富通天下软件下载 编辑:程序博客网 时间:2024/06/08 03:58
作为在中断中调用FreeRTOS系统的API函数的参考,disp_str()是显示屏的显示函数会将传入的字符串进行显示。
void TIM5_Int_Init(u16 arr,u16 psc){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); //ʱÖÓʹÄÜ TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler = psc; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure); TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE); NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 8; //保证优先级受FreeRTOS系统的控制 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM5,ENABLE);}
extern QueueHandle_t Message_Queue; extern void disp_str(u8* str);void TIM5_IRQHandler(void){ u8 *buffer; BaseType_t xTaskWokenByReceive = pdFALSE; BaseType_t err; if(TIM_GetITStatus(TIM5,TIM_IT_Update) == SET) { buffer = mymalloc(USART_REC_LEN); if(Message_Queue != NULL) ¦ { memset(buffer,0,USART_REC_LEN); err = xQueueReceiveFromISR(Message_Queue,buffer,&xTaskWokenByReceive); //保证需要进行任务切换的时候进行任务切换 //xTaskWokenByReceive的具体数值将由函数的返回值确定 if(err == pdTRUE) { disp_str(buffer); } } myfree(buffer); portYIELD_FROM_ISR(xTaskWokenByReceive); //根据xTaskWokenByReceive的值决定系统是否要进行任务的切换,结合上一步对xTaskWokenByReceive的调用刚好实现,让系统决定中断决定中断疏忽局处理完成之后是否进行任务的切换。 } TIM_ClearITPendingBit(TIM5,TIM_IT_Update);}
阅读全文
0 0
- 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
- STM32使用freertos时在中断中调用系统函数的注意点
- stm32f 使用freertos时在中断中调用系统函数的注意点
- FreeRTOS系统
- FreeRTOS中断调用api卡死
- FreeRTOS系统内核控制函数
- FreeRTOS 系统使用
- FreeRTOS任务API函数的使用
- FreeRTOS 中断
- STM32F4使用FreeRTOS的中断
- STM32F4使用FreeRTOS的中断
- FreeRTOS 任务调度 系统节拍
- FreeRTOS学习之:系统延时
- FreeRTOS系列第18篇---FreeRTOS队列API函数
- FreeRTOS系列第20篇---FreeRTOS信号量API函数
- FreeRTOS系列第18篇---FreeRTOS队列API函数
- FreeRTOS系列第20篇---FreeRTOS信号量API函数
- FreeRTOS高级篇9---FreeRTOS系统延时分析
- C#中的引用传递、值传递。
- 数据库连接池druid配置
- C++中不能重载的运算符原因
- 【深度学习论文】Dispnet
- 喷水装置(一)
- 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
- 人工智能之自动驾驶系列(一):概要
- lintcode -- 最大数
- ubuntu 1604 桌面版中配置mesos测试环境
- 关于mysql优化原理收获不少的文章
- 二维数组中的查找
- Java读取word文件
- hdu_1087_和做的上一个递推一样_简单_不必复习
- 顺序表