版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务8-2软件定时器使用Task8-2UsingSoftwareTimer《物联网操作系统技术与应用》制作人张亚军
任务描述在LiteOS中创建两个软件定时器,其中一个软件定时器是单次模式,5000Ticks后调用一次回调函数,另一个软件定时器是周期模式,每1000Ticks调用一次回调函数,在回调函数中输出相关信息。
任务实现1.打开第2章中移植好LiteOS的裸机工程TEST,修改OS_CONFIG\target_config.h文件。任务8-2软件定时器使用 242
#defineLOSCFG_BASE_CORE_SWTMR_ALIGNNO2.修改main.c文件,添加头文件。26
/*USERCODEBEGINIncludes*/27
/*LiteOS头文件*/28#include"los_sys.h"29#include"los_task.ph"30#include"los_swtmr.h"31/*USERCODEENDIncludes*/3.定义软件定时器句柄(ID),声明全局变量。任务8-2软件定时器使用 60
/*USERCODEBEGIN0*/61
/*定义定时器句柄(ID)*/62UINT16Timer1_Handle;63UINT16Timer2_Handle;64
/******************全局变量声明********************/65
staticUINT32TmrCb_Count1=
0;66
staticUINT32TmrCb_Count2=
0;4.定义软件定时器回调函数Timer1_Callback()、Timer2_Callback()。67
/*************************************************************68*@函数名
:Timer1_Callback69*@功能说明:
软件定时器回调函数170*@参数
:
传入1个参数,但未使用
71*@返回值
:
无72***********************************************************/73
static
voidTimer1_Callback(UINT32arg)74
{75UINT32tick_num1;76TmrCb_Count1++;
/*每回调一次加一*/77HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_5);
//LED1翻转78tick_num1=
(UINT32)LOS_TickCountGet();
/*获取滴答定时器的计数值*/
79printf("全局变量TmrCb_Count1=%d\n",TmrCb_Count1);80printf("软件定时器Timer1的计数值tick_num1=%d\n",tick_num1);81
}任务8-2软件定时器使用 82
/************************************************************83*@函数名
:Timer2_Callback84*@功能说明:
软件定时器回调函数285*@参数
:
传入1个参数,但未使用
86*@返回值
:
无87***********************************************************/88
static
voidTimer2_Callback(UINT32arg)89
{90UINT32tick_num2;
91TmrCb_Count2++;
/*每回调一次加一*/92HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_4);
//LED2翻转93tick_num2=
(UINT32)LOS_TickCountGet();
/*获取滴答定时器的计数值*/
94printf("全局变量TmrCb_Count2=%d\n",TmrCb_Count2);
95printf("软件定时器Timer2的计数值tick_num2=%d\n",tick_num2);
96
}5.定义创建、启动软件定时器的函数AppTaskCreate()。任务8-2软件定时器使用 97
/************************************************************98*@函数名
:AppTaskCreate99*@功能说明:
创建、启动软件定时器100*@参数
:
无
101*@返回值
:
无102***********************************************************/103staticUINT32AppTaskCreate(void)104{105
/*定义一个返回类型变量,初始化为LOS_OK*/106UINT32uwRet=LOS_OK;
107
/*创建一个软件定时器定时器*/108uwRet=LOS_SwtmrCreate(5000,
/*软件定时器的定时时间*/
109LOS_SWTMR_MODE_ONCE,
/*软件定时器模式,一次模式*/110
(SWTMR_PROC_FUNC)Timer1_Callback,
/*软件定时器的回调函数*/111
&Timer1_Handle,
/*软件定时器的id*/112
0);
113
if
(uwRet!=LOS_OK)114
{115printf("软件定时器Timer1创建失败!\n");116
}117uwRet=LOS_SwtmrCreate(1000,
/*软件定时器的定时时间(ms)*/
118LOS_SWTMR_MODE_PERIOD,
/*软件定时器模式,周期模式*/119
(SWTMR_PROC_FUNC)Timer2_Callback,
/*软件定时器的回调函数*/120
&Timer2_Handle,
/*软件定时器的id*/121
0);
122
if
(uwRet!=LOS_OK)
123
{124printf("软件定时器Timer2创建失败!\n");125
returnuwRet;126
}
127
/*启动一个软件定时器定时器*/128uwRet=LOS_SwtmrStart(Timer1_Handle);129
if
(LOS_OK!=uwRet)130
{131printf("startTimer1failed\n");132
returnuwRet;133
}134
else135
{136printf("启动软件定时器Timer1成功!\n");137
}138
/*启动一个软件定时器定时器*/139uwRet=LOS_SwtmrStart(Timer2_Handle);140
if
(LOS_OK!=uwRet)141
{142printf("startTimer2failed\n");143
returnuwRet;144
}145
else146
{147printf("启动软件定时器Timer2成功!\n");148
}
149
returnLOS_OK;150}151/*USERCODEEND0*/6.在主函数中修改代码。任务8-2软件定时器使用 157intmain(void)158{159
/*USERCODEBEGIN1*/160UINT32uwRet=LOS_OK;
//定义一个返回类型变量,初始化为LOS_OK161
/*USERCODEEND1*/162
/*MCUConfiguration----------------------------------*/163
/*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/164HAL_Init();165
/*Configurethesystemclock*/166SystemClock_Config();167
/*Initializeallconfiguredperipherals*/168MX_GPIO_Init();169MX_USART1_UART_Init();170MX_USART2_UART_Init();171MX_USART3_UART_Init();172
/*LiteOS内核初始化*/173uwRet=LOS_KernelInit();174
if
(uwRet!=LOS_OK)175
{176printf("LiteOS核心初始化失败!失败代码0x%X\n",uwRet);177
returnLOS_NOK;178
}179printf("任务8-2软件定时器使用!\n\n");180uwRet=AppTaskCreate();181
if
(uwRet!=LOS_OK)182
{183printf("AppTaskCreate创建任务失败!失败代码0x%X\n",uwRet);184
returnLOS_NOK;185
}186
/*开启LiteOS任务调度*/187LOS_Start();188
/*Infiniteloop*/189
while
(1)190
{191
}192}7.添加串口发送函数。任务8-2软件定时器使用 250/*USERCODEBEGIN4*/251intfputc(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工考勤制度及规定
- 基地教官考勤制度
- 客服考核考勤制度
- 公共机构考勤制度
- 学校学生考勤制度
- 加班算不算考勤制度
- 学校班子考勤制度
- 文化传媒公司内容审核制度解读
- 企业事故隐患内部报告奖励制度
- 宝钢集团副总经理的钢铁产业升级方案
- 饮品店食品安全管理制度
- 2024-2025学年八年级物理下册知识点归纳
- 品质意识活动方案
- 小红书聚光平台营销玩法
- 2025年《植物造景》课程标准(含课程思政元素)
- 暑假支教安全教育
- 《数字化转型对某公司效绩的影响》开题报告(含提纲)3200字
- 2024-2025学年湖南省长沙市雅礼教育集团八年级(上)期末物理试卷含解析
- 护士培训便携式吸痰器操作流程
- 《《中央企业合规管理办法》解读》课件
- 抒情与写意-文人画 课件-2024-2025学年高中美术人美版(2019)美术鉴赏
评论
0/150
提交评论