嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
2017-08-19 10:15
393 查看
作为在中断中调用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); }
相关文章推荐
- STM32使用freertos时在中断中调用系统函数的注意点
- stm32f 使用freertos时在中断中调用系统函数的注意点
- APUE读书笔记-10信号-05被中断的系统调用
- C#中调用API函数RegisterHotKey注册多个系统热键
- 中断、异常和系统调用
- linux系统编程之信号(七):被信号中断的系统调用和库函数处理方式
- 系统调用与软件中断SWI的实现
- 《Linux内核分析》-- 扒开系统调用的三层皮(下)之system_call中断处理过程 20135311傅冬菁
- DOS系统功能调用与BIOS中断调用
- 系统调用与软件中断SWI的实现
- 《UNIX环境高级编程》笔记--中断的系统调用
- C#中调用API函数RegisterHotKey注册多个系统热键
- C# 调用系统API函数直接连接pos打印机 打印
- C#中调用API函数RegisterHotKey注册多个系统热键
- linux2.6下系统调用被信号中断时的响应
- 关于 arm的中断系统 分类: 嵌入式开发学习 2011-04-11 19:30 560人阅读 评论(0) 收藏
- 个人学习笔记---软中断(下半部)和软件中断(系统调用)的区别
- 嵌入式FreeRTOS操作系统中断优先级配置(重要)
- 信号对系统调用的作用---自动重启动或被中断而停止执行
- 反射调用android系统级API函数