嵌入式课程设计论文

嵌入式课程设计论文

ID:19575076

大小:63.50 KB

页数:10页

时间:2018-10-03

嵌入式课程设计论文_第1页
嵌入式课程设计论文_第2页
嵌入式课程设计论文_第3页
嵌入式课程设计论文_第4页
嵌入式课程设计论文_第5页
资源描述:

《嵌入式课程设计论文》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、多任务下的密码锁程序设计一.设计思路根据嵌入式操作系统μC/OS-Ⅱ下的开发方式,设计一个由两个任务组成的密码锁程序。其中任务一为用键盘输入密码的任务,led灯作为提示,任务二中用开关控制led灯。两个任务都使用了led灯,对led灯的控制权通过互斥信号量实现。任务一需要键盘输入的数据,故对驱动程序进行了适当修改,把键盘按键值存入一个缓冲变量keybuf(具体代码见二中key.c文件)。以下介绍具体代码和运行结果。二.源代码分析/*以下为main.c主程序文件*/#include"string.h"/*包含与字符串输出相关的头文件*/#include"IN

2、CLUDES.H"/*包含与uC/OS-II相关的系统调用的头文件*/#include"mx1_aitc.h"/*包含与中断控制器相关的头文件*/#include"IRQ.h"/*包含与中断管理相关的头文件*/#include"led.h"/*包含与led相关的头文件*/#include"mx1_gpio.h"/*包含与IO接口功能选择相关的头文件*/#include"switch.h"/*包含与开关相关的头文件*/#include"key.h"/*包含与键盘相关的头文件*/#include"misc.h"/*包含几个实用函数的头文件*//*用于时钟中断*

3、/externvoidOSStartTimeTick(void);externvoidOSTickISR(void);externcharkeybuf;/*键盘缓冲变量*/charstr[7]={0};/*保存输入的密码*/charstrpre[7]="456789";/*保存正确的密码*/inti=0;/*计数变量*/#defineSTK_SIZE_TASK1256/*分配给任务的堆栈大小*/#defineSTK_SIZE_TASK2256#definePRIO_TASK13/*任务的优先级*/#definePRIO_TASK24OS_STKStkTas

4、k1[STK_SIZE_TASK1];/*为任务分配堆栈空间*/OS_STKStkTask2[STK_SIZE_TASK2];OS_EVENT*pLedSem;/*用于LED的信号量*//*自检函数,密码正确,进入任务二后,点亮所有led灯,然后逐个熄灭*/voidCheck(){LED_On(LED3);LED_On(LED4);LED_On(LED5);LED_On(LED6);LED_On(LED7);LED_On(LED8);LED_On(LED9);LED_On(LED10);OSTimeDlyHMSM(0,0,0,400);LED_Off(LE

5、D3);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED4);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED5);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED6);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED7);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED8);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED9);OSTimeDlyHMSM(0,0,0,400);LED_Off(LED10);}/*

6、第一个任务:用键盘输入密码,led上显示相关内容*/voidYourTask1(void*pdata){INT8Uerr;IRQ_Register(OSTickISR,TIMER1_INT);/*开启uC/OS-II的时钟中断(必须在第一个运行的任务里进行)*/OSStartTimeTick();LED_Init(LED3);/*初始化led*/LED_Init(LED4);LED_Init(LED5);LED_Init(LED6);LED_Init(LED7);LED_Init(LED8);LED_Init(LED9);LED_Init(LED10);S

7、WITCH_Init(SW2);/*初始化开关*/SWITCH_Init(SW3);SWITCH_Init(SW4);SWITCH_Init(SW5);SWITCH_Init(SW6);SWITCH_Init(SW7);SWITCH_Init(SW8);SWITCH_Init(SW9);KEY_Init();/*初始化键盘*/OSSemPend(pLedSem,0,&err);/*等待信号量*/while(1){/*熄灭所有led灯,功能有3个:1.让初始化后点亮的led灯熄灭;2.键盘按下导致点亮的led灯统一在这里熄灭;3.从任务二返回后将还亮着的le

8、d灯熄灭*/LED_Off(LED3);LED_Off(LED4)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。