《嵌入式操作系统》课件-项目一 LED 灯控制设计与实现_第1页
《嵌入式操作系统》课件-项目一 LED 灯控制设计与实现_第2页
《嵌入式操作系统》课件-项目一 LED 灯控制设计与实现_第3页
《嵌入式操作系统》课件-项目一 LED 灯控制设计与实现_第4页
《嵌入式操作系统》课件-项目一 LED 灯控制设计与实现_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LED灯控制设计与实现数码管数字钟的设计与实现串行通信的设计与实现数字电压表的设计与实现勤思考勤动手勤总结LED灯控制设计与实现数码管数字钟的设计与实现串行通信的设计与实现数字电压表的设计与实现软硬结合理实结合虚实结合线上下结合学做结合LED灯控制设计与实现项目一任务一嵌入式STM32认知1.1.1嵌入式系统概述目录嵌入式系统的定义嵌入式系统的特点嵌入式系统的发展嵌入式系统的应用一、嵌入式系统的定义定义一嵌入式系统是“控制、监视或辅助设备、机器或用于工厂运作的设备”。定义二嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。一、嵌入式系统的定义以应用为中心

强调了嵌入式系统的目标,即满足用户的特定需求。就绝大多数完整的嵌入式系统而言,用户打开电源即可直接享用其功能,无需二次开发或仅需少量配置操作。一、嵌入式系统的定义以现代计算机技术为核心

说明了嵌入式系统相关技术,比如集成电路设计技术、系统结构技术、传感器与检测技术、嵌入式操作系统和实时操作系统技术、通信技术和信号处理等技术均围绕着计算机基本原理,与计算机技术密不可分。一、嵌入式系统的定义软硬件可裁剪

嵌入式系统针对的应用场景非常多,这会导致在系统设计时会有差异性极大的设计指标要求,以至于现实上很难有一套方案满足所有的系统要求,所以根据需求的不同,灵活裁剪软硬件、组建符合要求的最终系统是嵌入式技术发展的必然技术路线。一、嵌入式系统的定义专用计算机系统

专用计算机是区别与通用计算机的,因为嵌入式系统的应用场合大多对可靠性、实时性有较高要求,这就决定了服务于特定应用的专用系统是嵌入式系统的主流模式,它并不强调系统的通用性和可扩展性。一、嵌入式系统的定义嵌入式系统与通用计算机的区别嵌入式系统通用计算机形式与类型按应用进行分类大、中、小型机、微机组成软硬件紧密结合软硬件相对独立系统资源系统资源紧缺系统资源充足开发方式开发平台一般是通用计算机运行平台是嵌入式系统开发平台和运行平台都是通用计算机一、嵌入式系统的定义嵌入式系统由硬件和软件组成软件输出输入处理器存储器一、嵌入式系统的定义“两嵌入、一专用”两嵌入:硬件嵌入芯片、软件嵌入硬件,软硬件是紧密联系在一起的。一专用:嵌入式系统具有特定的应用场景,其功能是固定的。一、嵌入式系统的定义硬件+软件(CPU+存储器+I/O+中断(定时器、外部请求、通信)等集于一块芯片)人体+思想(大脑+大脑皮层+四肢(I/O)+器官(如生物钟(中断定时)、耳嘴(串行通信))等二、嵌入式系统的特点1.专用性强2.体积小型化3.实时性好4.可裁剪性好5.可靠性高6.功耗低7.不具备自身开发能力8.“软硬件协同设计”三、嵌入式系统的发展微型计算机时代系统结构单一,处理效率低存储容量十分有限,几乎无用户接口。20世纪70年代微控制器阶段硬件使用嵌入式微处理器通用性弱,系统开销小,效率较高。20世纪80年代片上系统兼容性好,操作系统的内核小。20世纪90年代21世纪Internet为标志的嵌入式系统嵌入式处理器集成了网络接口,嵌入式设备应用于网络环境。四、嵌入式系统的应用四、嵌入式系统的应用工业控制领域中四、嵌入式系统的应用交通管理领域中四、嵌入式系统的应用智能家居中的应用四、嵌入式系统的应用环境工程与自然中的应用总结嵌入式系统的定义嵌入式系统的组成嵌入式系统的特点嵌入式系统的发展LED灯控制设计与实现项目一任务一嵌入式STM32认知1.1.2STM32嵌入式概述目录ARMCortex系列STM32F103微控制器概述STM32与51单片机的区别一、ARMCortex系列ARM是公司的名字是一种处理器体积小低功耗低成本高性能一、ARMCortex系列ARM内核一、ARMCortex系列ARM内核适用于高性能设备一、ARMCortex系列ARM内核能效最高、成本最低一、ARMCortex系列ARM内核实时处理器一、ARMCortex系列ARM内核低功耗嵌入式系统二、STM32微控制器概述ARM公司Cortex-M系列意法半导体获得Cortex-M系列内核授权推出32位STM32微控制器代表的是这个单片机是32位的微控制器二、STM32微控制器概述ARM公司Cortex-M系列意法半导体获得Cortex-M系列内核授权推出32位STM32微控制器一、ARMCortex系列STM32微控制器的分类二、STM32微控制器概述哪些微控制器属于高性能MCU哪些属于无线系列哪些属于低功耗系列二、STM32微控制器概述二、STM32微控制器概述二、STM32微控制器概述命名规则示例:产品系列STM32=基于ARM®的32位微控制器产品类型F=通用类型产品子系列引脚数目闪存存储器容量封装温度范围内部代码A或者空(详见产品数据手册)选项B=128KB的闪存存储器C=256KB的闪存存储器D=384KB的闪存存储器E=512KB的闪存存储器H=BGAT=LQFPU=VFQFPNY=WLCSP64xxx=已编程的器件代号(3个数字)TR=卷带式包装

101=基本型102=USB基本型USB2.0全速设备103=增强型105或107=互联型T=36脚C=48脚R=64脚V=100脚

Z=144脚4=16KB的闪存6=32KB的闪存8=64KB的闪存存储器6AxxxSTM32F103ZET6=工业级温度范围,-40℃~85℃7=工业级温度范围,-40℃~105℃二、STM32微控制器概述,二、STM32微控制器概述命名规则示例:产品系列STM32=基于ARM®的32位微控制器产品类型F=通用类型产品子系列引脚数目闪存存储器容量封装温度范围内部代码A或者空(详见产品数据手册)选项B=128KB的闪存存储器C=256KB的闪存存储器D=384KB的闪存存储器E=512KB的闪存存储器H=BGAT=LQFPU=VFQFPNY=WLCSP64xxx=已编程的器件代号(3个数字)TR=卷带式包装

101=基本型102=USB基本型,USB2.0全速设备103=增强型105或107=互联型T=36脚C=48脚R=64脚V=100脚

Z=144脚4=16KB的闪存6=32KB的闪存8=64KB的闪存存储器6AxxxSTM32F103ZET6=工业级温度范围,-40℃~85℃7=工业级温度范围,-40℃~105℃二、STM32微控制器概述命名规则STM32F103R6按照命名规则分析该芯片为具有64个引脚、32KB的闪存存储器的通用增强型STM32芯片。二、STM32微控制器概述

STM32F103主要特性

STM32F103家族中不同型号芯片内核相同工作频率相同但片内FLASH存储器和SRAM存储器的容量以及片内外设数量有所不同,对外部的通信接口数量和芯片封装也各不相同,因此性价比也各不相同。三、STM32与51单片机的区别序号STM32F103AT89C511集成了32位的ARMCortex-M3内核,最高工作频率可达72MHz8位的CPU,工作频率12MHz2具有512kB片内FLASH存储器和64kB片内SRAM存储器4kBROM和128字节RAM3内部集成了8MHz晶体振荡器,可外接4~16MHz时钟源外接6~24MHz4具有睡眠、停机、待机等三种低功耗工作模式无5集成了11个定时器:4个16位的通用定时器,2个16内部集位的可产生PWM波控制电机的定时器,2个16位的可驱动DAC的定时器,2个加窗的看门狗定时器和1个24位的系统节拍定时器(24位减计数)2个定时/计数器三、STM32与51单片机的区别序号STM32F103AT89C516集成了内部温度传感器和实时时钟RTC无7具有112根高速通用输入输出口(GPIO),可从其中任选16根作为外部中断输入口,几乎全部GPIO可承受5V输入(PA0~PA7、PB0~PB1\PC0~PC5、PC13~PC15和PF6~PF10除外)32根IO口线,4个端口P0~P38集成了13个外部通信接口:2个I2C、3个SPI(18Mbps,其中复用2个I2S)、1个CAN(2.0B)、5个UART、1个USB2.0设备和1个并行SDIO1个UART9具有12通道的DMA控制器,支持定时器、ADC、DAC、SDIO、I2S、SPI、I2C和UART外设无总结与作业学习ARMCortex系列内核STM32F103微控制器定义、特点、命名规则STM32与51单片机的区别预习下节课内容LED灯控制设计与实现项目一任务一嵌入式STM32认知1.1.3嵌入式STM32F10X固件库重构目录固件库的认识与重构自建库整合Keil5工程模板创建一、固件库的认识与重构

库函数类型程序是意法半导体公司针对STM32F10x微控制器的全部外设提供的可以抽象访问的一种函数,所谓的“抽象访问”是指当访问片内外设时,不需要关心片内外设寄存器的地址和各位的含义,而是通过库函数定义的常量和函数调用直接访问。一、固件库的认识与重构固件库那么什么是固件库呢?一、固件库的认识与重构

STM32固件库根据CMSIS标准(即ARMCortex微控制器软件接口标准)而设计的。

CMSIS标准由ARM和芯片生产商共同提出,让不同的芯片公司生产的CortexM3微控制器能在软件上基本兼容。一、固件库的认识与重构

STM32F10x标准外设库ST公司是基于STM32F1系列微控制器的固件库进行STM32F103开发的一把利器。可以像在标准C语言编程中调用printf()一样,在STM32F10x的开发中可调用标准外设库的库函数,进行应用开发。一、固件库的认识与重构固件库的下载从ST官方网站中下载1资源中直接下载2一、固件库的认识与重构固件库的认识一、固件库的认识与重构这些库函数是我们开发程序所必须的吗?显然不是一、固件库的认识与重构固件库的重构内核STM32F10X固件库用户对象二、自建库整合STM32F10X_ALIB二、自建库整合STM32F10X_ALIBcl是互联型产品vl是超值型产品xl是超高密度产品ld是低密度产品md是中等密度产品hd是高密度产品二、自建库整合STM32F10X_ALIB

1内核、2设备、23外围、2用户、3系统。二、自建库整合STM32F10X_ALIB

1内核、1设备、23外围、1用户、3系统。三、Keil5工程模板创建1.工程搭建与函数库添加——建工程加芯片三、Keil5工程模板创建1.工程搭建与函数库添加——建分组加文件(.C和.S)三、Keil5工程模板创建1.工程搭建与函数库添加——加.h路径到编译三、Keil5工程模板创建2.keil5开发编译环境设置——选择编译器三、Keil5工程模板创建2.keil5开发编译环境设置——链接文件三、Keil5工程模板创建2.keil5开发编译环境设置——目标文件总结与作业固件库的认识与重构自建库整合Keil5工程模板创建总结作业下载固件库重构固件库整合固件库LED灯控制设计与实现项目一LED灯软件程序设计步骤1、程序设计软件:KeiluVision52、新建工程并保存LED灯软件程序设计步骤3、添加芯片到工程LED灯软件程序设计步骤4、修改添加文件夹LED灯软件程序设计步骤5、添加C文件到工程LED灯软件程序设计步骤6、添加S文件到工程LED灯软件程序设计步骤7、设置H文件到路径LED灯软件程序设计步骤8、全局变量宏定义方法1:LED灯软件程序设计步骤8、全局变量宏定义方法2:LED灯软件程序设计步骤9、新建添加.c文件到USER文件夹LED灯软件程序设计步骤PB0引脚输出控制led灯的亮灭和闪烁;对应电路LED亮时PB0输出低电平;

LED灭时PB0输出高电平;亮灭闪烁需要在亮灭后加一定的延时程序;不停循环就实现上述功能。10、ledflash.c文件编写思路及流程根据功能需求分析、软硬结合、书写细化流程步骤:LED灯软件程序设计步骤1、预处理包含头文件2、端口初始化3、LED闪烁思路:

无限循环{PB_PIN_0设置高电平延时1秒P0_PIN_0设置低电平延时1秒}

11、ledflash.c文件包括语句LED灯软件程序设计步骤//1、预处理包含头文件#include<stm32f10x.h>//包含stm32f10系列#include<delay.h>//包含延时函数//2、intmain(void)//主函数{//端口初始化://端口定义结构体、时钟配置并使能,成员赋值初始化 GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure); 12、ledflash.c代码编写LED灯软件程序设计步骤

//无限循环闪烁点亮while(1) {GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_RESET); Delay(1000);GPIO_WriteBit(GPIOB,GPIO_Pin_0,Bit_SET); Delay(1000); }

} 12、ledflash.c代码重点关注刷红的字符。 LED灯软件程序设计步骤13、编译链接生成.HEX文件重新构建按钮加载程序代码(HEX文件)到芯片嵌入式软件设计归纳总结新建工程选芯片加载标库到工程配置参数到环境新建文件存点C加载点C到工程编写代码生点H加载点H到芯片简洁:建工程加标库、编代码验效果四颗LED流水灯设计与制作四、输出函数整理(一)#include<stm32f10x.h>//包含如下端口写函数1.整个端口_写字函数GPIO_Write(GPIOX,temp)2.端口位_写位函数GPIO_WriteBit(GPIOX,GPIO_Pin_Y,Z)3.端口位_置位/复位函数GPIO_SetBits(GPIOX,GPIO_Pin_Y)GPIO_ResetBits(GPIOX,GPIO_Pin_Y)(二)#include<sys.h>//包含端口位写函数

PXout(Y)=Z

注:X端口(A--G),Y端口引脚号(0--15),Z端口引脚电平0或1,temp表示临时字变量0X0000-0XFFFF;LED灯控制设计与实现项目一四颗LED流水灯效果图修改后的文件夹及文件名四颗LED流水灯设计与制作四颗LED流水灯设计与制作硬件设计四颗LED流水灯设计与制作1、软件工程名修改、C文件添加四颗LED流水灯设计与制作2、软件编写思路及流程根据功能分析、软硬结合、细化流程:PB0--PB3引脚输出控制4颗led灯的亮灭和闪烁;对应电路LED亮时对应引脚输出低电平;

LED灭时对应引脚输出高电平;亮灭闪烁需要在当前状态加一定的延时程序;按照流水灯的顺序依次全部点亮后全灭;不停循环就实现上述功能。四颗LED流水灯设计与制作3、软件代码结构(1)预处理包含头文件(2)端口及引脚初始化(3)引脚输出流水闪烁当前显示状态下,各对应引脚输出高电平

或低电平延时1秒下一显示状态下,各对应引脚输出高电平或低电平延时1秒无限循环while(1)四颗LED流水灯设计与制作4、软件代码编写(1)预处理包含头文件#include<stm32f10x.h>//包含stm32f10系列#include<delay.h>//包含延时函数(2)intmain(void)//主函数{//端口初始化:端口定义结构体、时钟配置并使能,成员赋值初始化 GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=

GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; //GPIO_InitStructure.GPIO_Pin=0X000F; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure); 引脚或|运算赋值端口整体赋值1有效0无效四颗LED流水灯设计与制作4、软件代码编写//流水灯循环闪烁while(1) {GPIO_Write(GPIOB,0X000F);Delay(1000); GPIO_Write(GPIOB,0X0007);Delay(1000); GPIO_Write(GPIOB,0X0003);Delay(1000); GPIO_Write(GPIOB,0X0001);Delay(1000); GPIO_Write(GPIOB,0X0000);Delay(1000); }GPIO_Write(GPIO_temp)X端口(A--G)temp表示临时字变量0X0000—0XFFFF}//重点关注刷红的字符变化,0X表示16进制数。 四颗LED流水灯设计与制作一、头文件申明#include<*.h>二、端口初始化结构体类型变量定义、使能成员赋值、结构初始化三、流水灯控制端口送数延时等待依次循环四颗LED流水灯设计与制作四、输出函数整理(一)#include<stm32f10x.h>//包含如下端口写函数1.整个端口_写字函数GPIO_Write(GPIOX,temp)2.端口位_写位函数GPIO_WriteBit(GPIOX,GPIO_Pin_Y,Z)3.端口位_置位/复位函数GPIO_SetBits(GPIOX,GPIO_Pin_Y)GPIO_ResetBits(GPIOX,GPIO_Pin_Y)(二)#include<sys.h>//包含端口位写函数

PXout(Y)=Z

注:X端口(A--G),Y端口引脚号(0--15),Z端口引脚电平0或1,temp表示临时字变量0X0000-0XFFFF;LED灯控制设计与实现项目一任务三8LED流水灯、跑马灯流水灯特点跑马灯特点一、LED8流水灯、跑马灯设计与仿真LED流水灯、跑马灯效果图修改后的文件夹及文件名硬件设计软件设计故障排除二、LED8流水灯设计与制作LED8流水灯设计与制作硬件设计LED8流水灯设计与制作软件设计1.软件工程名修改、C文件添加LED8流水灯设计与制作软件设计2.软件编写思路及流程功能分析、软硬结合、细化流程根据PB0--PB7引脚输出控制8颗led灯的亮灭和闪烁;对应电路LED亮时对应引脚输出低电平;对应电路LED灭时对应引脚输出高电平;亮灭闪烁需要在当前状态加一定的延时程序;按照流水灯的顺序依次全部点亮后全灭不停循环

就实现上述功能。LED8流水灯设计与制作软件设计3.软件代码结构(1)预处理包含头文件(2)端口及引脚初始化(3)引脚输出流水闪烁无限循环while(1){当前显示状态下,各对应引脚输出高电平或低电平

延时1秒

下一显示状态下,各对应引脚输出高电平或低电平

延时1秒

共9次送数延时;}软件设计4.软件代码编写(1)预处理包含头文件

#include<stm32f10x.h>#include<delay.h>(2)intmain(void)

{//端口初始化:结构定义、时钟使能,成员赋值 GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=

GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3| GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

//GPIO_InitStructure.GPIO_Pin=0X00FF; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

引脚或|运算赋值端口整体赋值1有效0无效二、LED8流水灯设计与制作LED8流水灯设计与制作软件设计4.软件代码编写while(1){GPIO_Write(GPIOB,0X00FF);Delay(1000);

GPIO_Write(GPIOB,0X007F);Delay(1000);

GPIO_Write(GPIOB,0X003F);Delay(1000);

GPIO_Write(GPIOB,0X001F);Delay(1000); GPIO_Write(GPIOB,0X000F);Delay(1000);

GPIO_Write(GPIOB,0X0007);Delay(1000);

GPIO_Write(GPIOB,0X0003);Delay(1000);

GPIO_Write(GPIOB,0X0001);Delay(1000);

GPIO_Write(GPIOB,0X0000);Delay(1000); }}

粘贴修改标红的十六进制复制这四行语句LED8流水灯设计与制作故障排除软件代码优化1:移位循环法inti,temp;//定义整形循环变量i和临时变量temp

while(1)

{for(i=0;i<9;i++)//流水灯{temp=0x00ff>>i;//0x00ff右移i位赋值tempGPIO_Write(GPIOB,temp);Delay(500);}for(i=0;i<9;i++)//跑马灯{temp=~(0x0080>>i);//0x0080右移i位后取反赋值tempGPIO_Write(GPIOB,temp);Delay(500); }}//~按位取反,!位取反,!=逻辑判断不等于。

LED8流水灯设计与制作故障排除软件代码优化2:数组循环法inti;

intlsd[9]={0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X010,X00};

intpmd[9]={0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE,0X00};

while(1)

{for(i=0;i<9;i++)//流水灯 {GPIO_Write(GPIOB,lsd[i]);Delay(500); } for(i=0;i<9;i++)//跑马灯 {GPIO_Write(GPIOB,pmd[i]);Delay(500);

}

}

总结多led灯亮灭控制方法

顺序语句法方法1端口送数

GPIO_Write()延时等待Delay()依次循环while(1)

移位循环法方法2右移逻辑运算符>>依次移位循环送数、延时等待

for(初值、条件、增量)

数组循环法方法3依定义数组、循环送数、延时等待lsd[],首数组元数为lsd[0]总结知识点~、!、!=逻辑运算符区分1>>右移逻辑表达式2for()与while()循环区别

3数组[]定义使用4LED灯控制设计与实现项目一任务三一键多能(流水、跑马、爆闪)文件复制修改一、一键多能LED控制设计与仿真硬件设计二、一键多能LED控制硬件设计硬件设计1.输入按键信号的检测2.消除抖动的措施一次有效按键检测由按键按下(低电平)和按键弹起(高电平)两个过程组成。消除按键由高电平变为低电平以及由低电平变为高电平所产生的抖动尖峰脉冲。(1)硬件去抖,在按键上并联一只0.1-1uF的电容;(2)软件去抖,需要在按下和弹起各增加5-10ms的延时;二、一键多能LED控制硬件设计按键抖动及软件去抖流程如下图:一键多能LED控制硬件设计按键触点机械抖动检测按键释放按键二、一键多能LED控制硬件设计1.软件工程名修改、C文件添加三、一键多能LED控制软件设计2.软件编写思路及流程一键多能LED控制软件设计根据功能分析、软硬结合、细化流程:KEY_LED按键识别次数决定显示的功能

初始状态

==0led全灭

==1

流水灯闪烁

==2跑马灯闪烁

==3爆闪灯闪烁

==4流、跑、爆轮流闪烁

==5三、一键多能LED控制软件设计3.软件代码结构一键多能LED控制软件设计(1)预处理包含头文件(2)端口及引脚初始化(3)输入按键次数控制输出引脚led闪烁无限循环while(1)

{if(key_num==0)初始状态全灭

==1

流水灯闪烁

==2跑马灯闪烁

==3爆闪灯闪烁

==4流、跑、爆轮流闪烁

==5key_num=0返回到起始灭灯

}

三、一键多能LED控制软件设计4.软件新增修改函数构建一键多能LED控制软件设计(1)/*端口初始化函数*/(2)/*按键识别与键值返回*/(3)/*输出闪烁灯功能函数*/voidGpio_Init();对输入输出端口引脚初始化定义。u8Key_Scan(void);识别按键是否为一次有效按键,将识别键位次数返回。voidLsd_Led8();流水灯数组法。voidPmd_Led8();跑马灯数组法。voidBsd_Led8();爆闪灯数组法。(4)函数调用根据Key_Scan(void)返回值,决定调用哪一闪烁函数或几种的组合函数。三、一键多能LED控制软件设计总结按键消抖方法:硬件法和软件六步法1一键多能法:识别有效键值次数、轮流循环2函数调用:根据键值数调用功能函数3LED灯控制设计与实现项目一任务三一键多能代码解读软件代码组成:子函数编写与函数调用一键多能代码解读1.预处理包含头文件2.变量、数组定义3.输入输出端口引脚初始化子函数4.按键识别与键值返回子函数5.输出闪烁灯功能子函数(流水、跑马、爆闪)6.主函数{调用输入输出端口引脚初始化子函数while(1) {根据按键的键值返回值调用不同的闪烁灯子函数 }}一键多能代码解读1.预处理包含头文件#预处理

include包含define宏定义.h头文件<>申明系统头文件KEY_LED替代读取PB15引脚状态值函数值(0或1)

GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)

一键多能代码解读2.变量、数组定义

u8等效于C51语言unsignedchar无符号8位字符

数据类型,相当于一个字节8位二进制数。

u16等效于C51语言unsignedint无符号16位整形

数据类型,相当于二个字节16位二进制数。

数组[],首元数重0开始,如:lsd[0]的值为0XFF;

0X表示16进制数。

一键多能代码解读3.输入输出端口引脚初始化子函数一键多能代码解读4.按键识别与键值返回子函数一键多能代码解读5.输出闪烁灯功能子函数(流水、跑马、爆闪)一键多能代码解读6.主函数一键多能代码解读6.主函数一键多能代码解读6.主函数一键多能代码解读6.主函数总结

读功能第一步注程序整体实现的功能,重点注写与硬件接口相对应功能。

读流程第二步注程序函数实现的功能,重点注写主函数调用子函数的流程及功能。

读语句第三步注程序语句实现在函数中的功能,重点注写该语句在函数的作用。

读写思改调拓LED灯控制设计与实现项目一任务三一键多能中断按键识别一键多能中断按键识别一键多能中断按键识别软件代码组成:子函数编写与函数调用一键多能中断按键识别1.预处理包含头文件2.变量、数组定义3.输入输出端口引脚初始化子函数4.外部中断配置子函数5.输出闪烁灯功能子函数(流水、跑马、爆闪)6.主函数初始化端口子函数和外中断子函数while(1){根据按键的键值返回值调用不同的闪烁灯

子函数}}

7.外中断服务函数(键位识别)一键多能中断按键识别1.外部中断配置子函数一键多能代码解读2.主函数修改*60行增加外中断输入配置函数,配置PB15引脚为外中断。

一键多能中断按键识别3.中断服务函数一键多能中断按键识别3.中断服务函数一键多能中断按键识别3.中断服务函数一键多能外部中断函数总结外部中断初始化子函数1.端口引脚配置数字量输入方式2.端口引脚配置对应中断线3.中断线参数配置4.中断优先级分组设置5.中断向量初始化外部中断服务函数1.中断通道号函数2.处理中断事件3.清除中断标志位

写功能第一步注写程序整体实现的功能,重点注写与硬件接口相对应功能。

写流程第二步注程序函数实现的功能流程,重点注写主函数调用子函数的流程及功能。

写语句第三步写程序语句代码,与注释混合书写,中英混合书写。

读写思改调拓优代码一键多能代码编写总结LED灯控制设计与实现项目一任务四汽车转向灯汽车转向灯文件复制修改硬件设计--汽车转向灯开关选择一、汽车转向灯硬件设计仿真单刀三掷开关硬件设计--左转、右转文字添加

汽车转向灯硬件设计一、汽车转向灯硬件设计硬件设计1.单刀三掷开关2.消除抖动的措施模拟控制汽车转向灯的左转、停止、右转三个输入开关量,控制VD1、VD2两只发光二极管的闪烁。按照一键多能任务点动按钮的消抖方法:(1)硬件去抖,在按键上并联一只0.1-1uF的电容;(2)软件去抖,需要在检测按键按下时增加10ms-20ms的延时。一、汽车转向灯硬件设计1.软件工程名修改、C文件添加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论