版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务9-1接管中断的使用Task9-1Useoftakeoverinterrupt《物联网操作系统技术与应用》制作人张亚军
任务描述
在LiteOS中创建使一个LED1翻转的任务,再创建两个被LiteOS接管的中断,并编写相关的中断服务程序,按下key1键触发key1键中断,sum1变量加1;按下key2键触发key2键中断,sum2变量加1。
任务实现
1.复制第2章中移植好LiteOS的裸机工程(接管中断),点击TEST目录下的TEST.ioc文件,打开STM32cubeMX的工程文件进行重新配置。
1)配置PA4、PA5引脚(key1和key2按键)为GPIO_EXTI4、GPIO_EXTI5模式,如图9-3所示。任务9-1接管中断的使用 图9-3配置PA4、PA5引脚为GPIO_EXTI4、GPIO_EXTI5模式2)在GPIO配置中配置PA4、PA5为上升沿触发,Pull-up上拉,如图9-4所示。任务9-1接管中断的使用 图9-4配置PA4、PA5为上升沿触发,Pull-up上拉3)点击“GENERATECODE”,弹出“CodeGeneration”对话框,点击“OpenProject”按钮,如图9-5所示,打开TEST工程。任务9-1接管中断的使用 图9-5“CodeGeneration”对话框2.在TEST工程中,修改main.c文件,添加头文件。26
/*USERCODEBEGINIncludes*/27
/*LiteOS头文件*/28#include"los_sys.h"29#include"los_typedef.h"30#include"los_task.ph"31#include"los_hwi.h"32
/*USERCODEENDIncludes*/3.定义全局变量、任务ID变量。任务9-1接管中断的使用 61/*USERCODEBEGIN0*/62/*定义全局变量sum1、sum2*/63
uint32_tsum1;64
uint32_tsum2;
65
/*定义任务ID变量*/66UINT32Test1_Task_Handle;4.定义任务实现函数Test1_Task()和任务创建函数Creat_Test1_Task()。67
/************************************************************68*@函数名
:Test1_Task69*@功能说明:Test1_Task任务实现70*@参数
:NULL71*@返回值
:NULL72*********************************************************/73
static
voidTest1_Task(void)74
{75UINT32uwRet=LOS_OK;76
while(1)77
{78HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_5);79printf("任务1运行中,每1000ticks打印一次信息\r\n");80uwRet=LOS_TaskDelay(1000);81
if(uwRet!=LOS_OK)82
return;83
}84
}任务9-1接管中断的使用 85
/************************************************************86*@函数名
:Creat_Test1_Task87*@功能说明:
创建Test1_Task任务88*@参数
:
89*@返回值
:
无90***********************************************************/91
staticUINT32Creat_Test1_Task()92
{93
//定义一个创建任务的返回类型,初始化为创建成功的返回值94UINT32uwRet=LOS_OK;
95
//定义一个用于创建任务的参数结构体96TSK_INIT_PARAM_Stask_init_param;
97task_init_param.usTaskPrio=
2;
/*任务优先级,数值越小,优先级越高*/98task_init_param.pcName=
"Test1_Task";/*任务名*/99task_init_param.pfnTaskEntry=
(TSK_ENTRY_FUNC)Test1_Task;/*任务函数入口*/100task_init_param.uwStackSize=
0x1000;
/*堆栈大小*/101uwRet=LOS_TaskCreate(&Test1_Task_Handle,
&task_init_param);/*创建任务*/102
returnuwRet;103}5.创建中断服务函数KEY1_IRQHandler()和KEY2_IRQHandler()。任务9-1接管中断的使用 104/************************************************************105*@函数名
:KEY1_IRQHandler106*@功能说明:
中断服务程序107*@参数
:
无108*@返回值
:
无109***********************************************************/110voidKEY1_IRQHandler(void)
{
111printf("KEY1键触发中断!,sum1:%d\r\n\n",sum1++);//触发一次按键1中断,按键1计数加一112__HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_4);//清除按键1标志
113
}114
/************************************************************115*@函数名
:KEY2_IRQHandler116*@功能说明:
中断服务程序117*@参数
:
无118*@返回值
:
无119**********************************************************/120
voidKEY2_IRQHandler(void)
{121printf("KEY2键触发中断!,sum2:%d\r\n\n",sum2++);//触发一次按键2中断,按键2计数和加一122__HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_5);//清除按键2标志123
}6.定义任务和中断管理函数AppTaskCreate()。任务9-1接管中断的使用 124
/*********************************************************125*@函数名
:AppTaskCreate126*@功能说明:
任务创建,为了方便管理,所有的任务创建函数都可以放在这个函数中127*@参数
:
无128*@返回值
:
无129*********************************************************/130
static
voidAppTaskCreate(void)
{131UINTPTRuvIntSave;
132
/*定义一个返回类型变量,初始化为LOS_OK*/133UINT32uwRet=LOS_OK;134uwRet=Creat_Test1_Task();135
if
(uwRet!=LOS_OK)136
{137printf("Test1_Task任务创建失败!失败代码0x%X\n",uwRet);138
}139uvIntSave=LOS_IntLock();/*屏蔽所有中断*/140
/*创建硬件中断,用于配置硬件中断并注册硬件中断处理功能*/141LOS_HwiCreate(EXTI4_IRQn,142
/*平台的中断向量号,可以在stm32l431xx.h找得到。*/143
0,
/*硬件中断优先级
暂时忽略此参数*/144
0,
/*硬件中断模式
暂时忽略此参数*/145KEY1_IRQHandler,
/*中断服务函数*/146
0);
/*触发硬件中断时使用的中断处理程序的输入参数
*/任务9-1接管中断的使用 147
/*创建硬件中断,用于配置硬件中断并注册硬件中断处理功能*/148LOS_HwiCreate(EXTI9_5_IRQn,149
/*平台的中断向量号,可以在stm32l431xx.h找得到。*/150
0,
/*硬件中断优先级
暂时忽略此参数*/151
0,
/*硬件中断模式
暂时忽略此参数*/152KEY2_IRQHandler,
/*中断服务函数*/153
0);
/*触发硬件中断时使用的中断处理程序的输入参数*/154LOS_IntRestore(uvIntSave);
/*恢复所有中断*/155
}156/*USERCODEEND0*/7.在主函数中修改代码。162intmain(void)163{164
/*USERCODEBEGIN1*/165UINT32uwRet=LOS_OK;
//定义一个返回类型变量,初始化为LOS_OK166
/*USERCODEEND1*/167
/*MCUConfiguration---------------------------------------*/168
/*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/169HAL_Init();170
/*Configurethesystemclock*/171SystemClock_Config();172
/*Initializeallconfiguredperipherals*/173MX_GPIO_Init();174MX_USART1_UART_Init();175MX_USART2_UART_Init();176MX_USART3_UART_Init();任务9-1接管中断的使用 177
/*USERCODEBEGIN2*/178printf("任务9-1接管中断的使用!\n\n");179
/*LiteOS核心初始化*/180uwRet=LOS_KernelInit();181
if
(uwRet!=LOS_OK)
{182printf("LiteOS核心初始化失败!\n");183
returnLOS_NOK;184
}185
/*创建App应用任务,所有的应用任务都可以放在这个函数里面*/186AppTaskCreate();187
/*USERC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 执法队员考勤制度
- 煤矿考勤制度实施细则
- 行政机关早操考勤制度
- 中国科学院山西煤炭化学研究所2025-2026年度科研人员第二次招聘54人备考题库及完整答案详解一套
- 辅警岗位责任考勤制度
- 香港理工大学考勤制度
- 2025年烟台市检察机关公开招聘聘用制书记员的备考题库(24人)及答案详解(易错题)
- 临沂市公安机关2025年第四季度招录警务辅助人员备考题库及完整答案详解1套
- 成都市公安局龙泉驿区分局2025年公开招聘警务辅助人员备考题库及完整答案详解
- 环保塑胶地板专项施工方案
- 【完整版】2025年一建《管理》真题及答案
- 镇江市高等专科学校单招考试文化素质数学考试历年机考真题集含答案详解【完整版】
- 呼吸科临床护理常规
- 【中考真题】2025年辽宁省中考数学试题(含解析)
- DB6101∕T 3124-2022 城市园林绿化 植物修剪技术规程
- T/ZHCA 018-2022化妆品用原料白桦树汁
- 工科化学 第三章氧化还原与电化学第四章物质结构基础
- 《心脏起搏器简介》课件
- 《课件:世界经济中心的迁移》
- 《独树一帜的建筑体系》教学课件-2024-2025学年赣美版初中美术九年级下册
- 监控员考试试题及答案
评论
0/150
提交评论