嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数
作为在中断中调用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);
}
嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数相关推荐
- STM32+Cube MX使用MPU6050 DMP时,在外部中断中调用read_dmp函数发生系统卡死问题的根本原因分析
系统环境 硬件: MCU:STM32F405RGT6 IMU:MPU6050 软件: 开发环境:KEIL MDK-ARM uVision5 MPU6050使用DMP 复现步骤 程序中MPU6050 D ...
- STM32中断中调用OLED显示出现OLED花屏
STM32中断中调用OLED显示出现OLED花屏 在TIM5中断处理函数中,我写了OLED显示,经过DEBUG发现程序执行到OLED显示语句的时候,OLED就会花屏. //中断服务处理函数 void ...
- android闹钟例子,自己软件中调用android系统闹钟
[实例简介] 自己软件中调用android系统闹钟! 综合网上资料,得来 [实例截图] [核心代码] 54ba60f3-fa09-4e61-b3ab-c4fca16d07b2 └── CallSyst ...
- html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...
vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...
- python中调用什么模块的什么函数来实现求实数平方根_python语言基础与应用答案...
python语言基础与应用答案 python3不再区分整数和长整数,统一为()类型. python可以使用(____)函数打开文件,这个函数默认的打开模式为(____). a=[3]alist=[1, ...
- 如何在智能合约中调用另一个合约的函数
智能合约是在区块链中被执行的一段程序,因为它们在区块链上执行,所以不依赖于任何的中心化服务器.目前最主流的智能合约编程语言是 Solidity. 在以太坊区块链中,智能合约可以和其他已经部署的智能合约 ...
- 双系统的电脑中如何完美系统其中一个操作系统
做软件开发的人员很多朋友为了开发方便和学习,都有安装双系统的习惯,可是卸载其中一个操作系统是个比较麻烦的事情,下面整理了常用的双系统搭配卸载方案,希望对大家有所帮助. 一.WIN7+XP,卸载XP 1 ...
- 在matlab中 编程n,Matlab与C++混合编程 1--在C++中调用自己写的matlab函数
在Visual Studio中使用C++中调用MATLAB程序 在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用,这样就可以实现matlab和C++混合编程的目 ...
- oracle中怎么获取系统时间,Oracle中如何获取系统当前时间
Oracle中如何获取系统当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ORACLE里获取一个时间的年.季.月.周.日 ...
最新文章
- C#中的深克隆的两种方式
- 战双帕弥什显示服务器满员,战双帕弥什星火和信标服务器有何区别
- 好的自我介绍,面试成功一大半
- php创建表设置编码,教您在Zend Framework里如何设置数据库编码以及怎样给数据表设定前缀!...
- 多用户文件系统java实现_为什么要有文件系统?文件系统都有那些种类?
- oracle查询一张表的主键,Oracle查询表主键、外键
- 【报告分享】中美人工智能之比较分析报告.pdf(附下载链接)
- linux iptables添加mysql访问
- Caffe学习:pycaffe利用caffemodel进行分类(2)
- 简单的U盘病毒清理工具 v0.5
- 格雷码详解(分治法)
- CGB2202-DAY02-IO低级流与高级流
- window的mysql开机自动启动
- PHP长方体体积,长方体体积公式
- 华为千亿美金年报里的5G、AI、云计算
- 满纸荒唐言:Processing 寻觅文字魅力篇
- photo技能大全,想学ps的来看看
- 富士施乐FujiXeroxDocuCentre-V2060扫描到PC
- python:PyQt5 简单示例
- 腾讯社招 —— 腾讯游戏后端工程师(一面)