嵌入式原理与应用期末复习

上传人:bei****lei 文档编号:252927406 上传时间:2024-11-24 格式:PPT 页数:43 大小:1.14MB
返回 下载 相关 举报
嵌入式原理与应用期末复习_第1页
第1页 / 共43页
嵌入式原理与应用期末复习_第2页
第2页 / 共43页
嵌入式原理与应用期末复习_第3页
第3页 / 共43页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,嵌入式系统原理与应用,*,期末复习,电话:,660345 13777780345,Email: ywb_jsj,*,嵌入式系统原理与应用,2,课程性质与目的,嵌入式原理与应用是电类本科专业的一门核心选修课程,该课程涵盖了,微电子技术、电子信息技术、计算机软、硬件,等多个领域,且,技术性,、工程性、,实践性,和综合性都很强的一门课。,使学生获得嵌入式系统的有关软硬知识,掌握嵌入式系统,程序设计,的基本方法和技巧;结合,上机实践,,使学生对嵌入式系统程序设计和软件开发过程有一个比较全面地、系统地了解;初步具备应用嵌入式系统解决实际问题的能力。,*,嵌入式系统原理与应用,3,课程内容,*,嵌入式系统原理与应用,4,嵌入式系列课程,嵌入式系统原理与应用,面向数据采集、控制等,实时应用,,基于,STM32 Cortex M3,嵌入式微控制器,讲述嵌入式系统基本原理与应用,嵌入式操作系统基础,基于,ucOS/II,嵌入式实时操作系统,讲述嵌入式操作系统基本原理,嵌入式系统软件开发,面向嵌入式网关等高端应用,基于嵌入式,Linux,操作系统,侧重嵌入式,Linux,下的软件开发,STM32F,系列 图解,STM32F10x,系列微控制器 系统结构,存储器组织,4G,字节的寻址空间,地址范围:,0x0000 0000-0xffff ffff,1.,空间,共分为,8,块,:,block0,block7,,每块,512M,外设寄存器组,(,PERIPHERALS,),-,包括输入输出端口,数据存储器,(SRAM),程序存储器,(CODE),APB1,APB2,AHB,0x4001 0000,0x4002 0000,0x4000 0000,外设寄存器求法,#define PERIPH_BASE (u32)0x40000000),寄存器地址,=,总线基址,+,外围总线基址,+,外设地址偏移量,+,寄存器偏移量,#define APB1PERIPH_BASE PERIPH_BASE,#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000),#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000),#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800),#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00),#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000),*,嵌入式系统原理与应用,10,标准外设库文件体系结构,*,嵌入式系统原理与应用,11,标准外设库文件描述:,CMSIS,文件,文件名,功能描述,具体功能说明,core_cm3.h,core_cm3.c,Cortex-M3,内核及其设备文件,访问,Cortex-M3,内核及其设,备,,提供,NVIC,,,SysTick,等访,问,Cortex-M3,的,CPU,寄存器和内核外设的函数,stm32f10x.h,微控制器专用头文件,包,含了,STM32F10x,全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等,system_stm32f10x.h,system_stm32f10x.c,微控制器专用系统文件,函数,SystemInit,用,来初始化微控制,器,Sysem_ExtMemCtl,配,置外部存储器控制器。它位于文,件,startup_stm32f10x_xx.s,/.c,,在跳转到,main,前调,用,SystemFrequncy,,该值代表系统时钟频率,startup_stm32f10x_Xd.s,编译器启动代码,微控制器专用的中断处理程序列表,(,与头文件一致,),弱,定义,(Weak),的中断处理程序默认函数,(,可以被用户代码覆盖,),,,该,文件是与编译器相关的,*,嵌入式系统原理与应用,12,外设驱动文件,文件名,功能描述,具体功能说明,stm32f10x_conf.h,固件库配置文件,通过更改包含的外设头文件来选择固件库所使用的外设,在新建程序和进行功能变更之前应当首先修改对应的配置。,stm32f10x_it.h,stm32f10x_it.c,外设中断函数文件,用户可以相应的加入自己的中断程序的代码,对于指向同一个中断向量的多个不同中断请求,用户可以通过判断外设的中断标志位来确定准确的中断源,执行相应的中断服务函数。,stm32f10x_ppp.h,stm32f10x_ppp.c,外设驱动函数文件,包括了相关外设的初始化配置和部分功能应用函数,这部分是进行编程功能实现的重要组成部分。,Application.c,用户文件,用户程序文件,通过标准外设库提供的接口进行相应的外设配置和功能设计。,misc.h,misc.c,单独对于,NVIC(,中断向量,嵌套,),的外设驱动,*,嵌入式系统原理与应用,13,STM32,标准外设库:命名规则,PPP,表示任一外设缩写,如,ADC,、,GPIO,系统、源程序文件和头文件命名都以,stm32f10x,开头,常量,仅被用于一个文件的,定义于该文件中;被用于多个文件的,在对应的头文件中定义;所有常量命名都用大写字母,寄存器作为常量处理,用大写字母命名,通常与用户手册中的命名一致,外设函数的命名以该外设的缩写加下划线开头,每个单词的第一个字母都由英文字母大写书写,如:,USART_SendData,,在函数命中,只允许存在一个下划线,用以分隔外设缩写和函数名的其他部分,*,嵌入式系统原理与应用,14,命名规则,PPP_Init,函数,其功能是根据,PPP_InitTypeDef,中指定的参数,初始化外设,PPP,,如,TIM_Init,PPP_DeInit,函数用于复位外设,PPP,的所有寄存器至默认值,例如,TIM_DeInit,PPP_StructInit,函数用于复位,PPP_InitTypeDef,结构体中的成员至默认值,如,USART_StructInit,PPP_Cmd,函数用于使能或失能外设,PPP,,如,USART_Cmd,PPP_ITConfig,函数用于使能或失能来自外设,PPP,的某中断源,如,RCC_ITConfig,*,嵌入式系统原理与应用,15,命名规则,PPP_DMAConfig,函数用于使能或失能外设,PPP,的,DMA,接口,如,TIM_DMAConfig,用以配置外设功能的函数,总是以字符串“,Config”,结尾,如,GPIO_PinRemapConfig,PPP_GetFlagStatus,函数用于检查外设,PPP,某标志位被设置与否,如,I2C_GetFlagStatus,PPP_ClearFlag,函数用于清除外设,PPP,的标志位,如,I2C_ClearFlag,PPP_GetITStatus,函数用于判断来自外设,PPP,的中断发生与否,如,I2C_GetITStatus,*,嵌入式系统原理与应用,16,数据类型和结构:变量(,stdint.h/core_cm3.h,),typedef unsigned char,uint8_t;,typedef unsigned short int,uint16_t;,typedef unsigned int,uint32_t;,#define _I volatile const,(,read only,),#define _IO volatile,(,read / write,),typedef signed char,int8_t;,typedef signed short int,int16_t;,typedef signed int,int32_t;,volatile,的作用,*,嵌入式系统原理与应用,17,定义为,volatile,的变量是说这变量可能会被意想不到地改变,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。,s,tatic,i,nti=0;,intmain(void),.,while(1),if(i),dosomething();,voidISR_2(void), i=1; ,编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,可能会导致dosomething永远也不会被调用。,*,嵌入式系统原理与应用,18,数据类型和结构:变量(,stm32f10x.h,),typedef int32_t,s32,;,typedef int16_t,s16,;,typedef int8_t,s8,;,typedef const int32_t,sc32,;/,只读变量,typedef const int16_t,sc16,;,typedef const int8_t,sc8,;,typedef _IO int32_t,vs32,;/,typedef _IO int16_t,vs16,;,typedef _IO int8_t,vs8,;,typedef _I int32_t,vsc32,;,typedef _I int16_t,vsc16,;,typedef _I int8_t,vsc8,;,说明变量在程序执行中可被隐含地改变,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份,*,嵌入式系统原理与应用,19,数据类型和结构:变量(,stm32f10x.h,),typedef uint32_t,u32,;,typedef uint16_t,u16,;,typedef uint8_t,u8,;,typedef const uint32_t,usc32,;/,只读变量,typedef const uint16_t,usc16,;,typedef const uint8_t,usc8,;,typedef _IO uint32_t,vu32,;/,typedef _IO uint16_t,vu16,;,typedef _IO uint8_t,vu8,;,typedef _I uint32_t,vuc32,;,typedef _I uint16_t,vuc16,;,typedef _I uint8_t,vuc8,;,*,嵌入式系统原理与应用,20,数据类型和结构:布尔类型,布尔类型定义为:,typedef enum,FALSE = 0;,TRUE = !FALSE;, bool;,标准,C,规定:“枚举类型的尺寸是以能够容纳最大枚举子的值的整数的尺寸”,就是说可以是,char,、,short,和,int,。,*,嵌入式系统原理与应用,21,数据类型和结构:标志位状态类型,标志位类型的两个可能值为“设置,(SET)”,、“重置,(RESET)”,:,typedef enum,RESET = 0;,SET = !RESET;, FlagStatus;,*,嵌入式系统原理与应用,22,数据类型和结构:功能状态类型,功能状态类型的两个可能值为“使能,(ENABLE)”,、“失能,(DISABLE)”,:,typedef enum,DISABLE = 0;,ENABLE = !DISABLE;, FunctionalState;,*,嵌入式系统原理与应用,23,数据类型和结构:错误状态类型,错误状态类型的两个可能值为“成功,(SUCCESS)”,、“出错,(ERROR)”,:,typedef enum,ERROR = 0;,SUCCESS = !ERROR;, ErrorStatus;,*,嵌入式系统原理与应用,24,数据类型和结构:外设结构,外设结构可以通过指向各个外设的指针访问各外设的控制寄存器,这些指针所指向的数据结构与各个外设的控制寄存器布局一一对应,文件,stm32f10x.h,包含了所有外设控制寄存器的结构,如,USART,寄存器结构的声明:,typedef struct,vu16 SR; u16 RESERVED0;,vu16 DR; u16 RESERVED1;,vu16 BBR; u16 RESERVED2;,vu16 CR1; u16 RESERVED3;,vu16 CR2; u16 RESERVED4;,vu16 CR3; u16 RESERVED5;,vu16 GTPR; u16 RESERVED6;,USART_TypeDef;,*,嵌入式系统原理与应用,25,时钟系统,*,嵌入式系统原理与应用,26,1,、,STM32,有,5,个时钟源,:HSI,、,HSE,、,LSI,、,LSE,、,PLL,。,HSI,是,高速内部,时钟,,RC,振荡器,频率为,8MHz,,精度不高。 ,HSE,是,高速外部,时钟,可接石英,/,陶瓷谐振器,或者接外部时钟源,频率范围为,4MHz16MHz,。 ,LSI,是,低速内部,时钟,,RC,振荡器,频率为,40kHz,,提供低功耗时钟。 ,LSE,是,低速外部,时钟,接频率为,32.768kHz,的石英晶体。 ,PLL,为锁相环,倍频,输出,,其时钟输入源,可选择为,HSI/2,、,HSE,或者,HSE/2,。,倍频可选择为,216,倍,但是其输出频率最大不得超过,72MHz,。,*,嵌入式系统原理与应用,27,RCC,库函数:,RCC_AHBPeriphClockCmd,函数原型,void,RCC_,AHBPeriphClockCmd(u32 RCC_AHBPeriph, FunctionalState NewState),功能描述,使能或失能,AHB,外设时钟,输入参数,RCC_AHBPeriph,: AHB,上的设备,NewState,: ENABLE,或,DISABLE,输出参数,无,返回值,无,先决条件,无,应用示例,RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE),STM32,单片机的每一个输入,/,输出引脚可以配置成以下,8,种模式,:,STM32,单片机的,GPIO,端口模式:,输入浮空:,IN_FLOATING,输入上拉:,IPU,(,In Push-Up,),输入下拉,:,IPD,(,In Push-Down,),模拟输入,:,AIN,(Analog In),开漏输出:,Out_OD,(,Open Drain Output,),推挽式输出,:,Out_PP,(Push-Pull Output),推挽式复用功能,:,AF_PP,(,Push-Pull Output Alternate-Function,),开漏复用功能,:,AF_OD,(,Open Drain Output Alternate-Function,),输 入,输 出,复用输出,I/O,端口位的推挽输出配置,推挽模式:输出寄存器上的,0,激活,N-MOS,,而输出寄存器上的,1,将激活,P-MOS,。,激活,施密特触发输入,弱上拉和下拉电阻被,禁止,在每个,APB2,时钟周期,出现在,I/O,脚上的数据被采样到,输入数据寄存器,*,嵌入式系统原理与应用,30,嵌套向量中断控制器,NVIC,:,Nested Vectored Interrupt Controller,,管理,ARM Cortex-M3,处理器的所有中断和中断优先级,是,Cortex-M3,不可分离的一部分,。,ARM Cortex-M3,处理器的,NVIC,:支持,256,个中断(,16,个内核中断,+,240,个外部中断,)和可编程,256,级中断优先级的设置。,所有基于,ARM Cortex-M3,内核的处理器(包括,STM32,)的,256,个中断中前面的,16,个内核中断都是一样的,而后面的,240,个,外部中断,的具体数目和中断优先级的位数由芯片厂商决定。,中断优先级,ARM Cortex-M3,内核定义了两类优先级:,抢占式优先级,响应优先级,(又称为副优先级或子优先级),注意:通常,每个,中断源都需要指定这两类优先级,。,STM32,单片机的中断优先级都是针对,“,中断通道,”,的。当该中断通道的优先级确定后,也就确定了该外围设备的中断优先级,并且该设备所能产生的所有类型的中断,都享有相同的通道中断优先级。,至于该设备本身产生的多个中断的执行顺序,则取决于用户的中断服务程序。,结,构体,NVIC_InitTypeDef,typedef struct,u8 NVIC_IRQChannel;,/,用于选择中断通道,u8 NVIC_IRQChannelPreemptionPriority;,/,用于设置中断通道的抢占式优先级,u8 NVIC_IRQChannelSubPriority;,/,用于设置中断通道的子优先级,FunctionalState NVIC_IRQChannelCmd;,/,用于选中的中断通道的中断使能或中断失能,NVIC_,Init,TypeDef,;,EXTI,(外部中断与外部事件,)控,制,器,EXTI,由,19,个产生事件,/,中断要求的,边沿检测器,组成。,每个输入线可以独立地配置输入类型,(,脉冲或挂起,),和对应的触发事件,(,上升沿、下降沿、双边沿都触发,),。,每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。,从,外部激励信号,来看,中断和事件是没有分别的,只是在芯片内部分开,一路信号会向,CPU,产生中断请求,另一路信号会向其它功能模块,发送脉冲触发信号,。,事件本质上就是一个触发信号(脉冲),是用来触发特定的外设模块或核心本身,(,唤醒,),;而中断则是一个固定的电平信号。,事件可以触发中断,也可以不触发;,中断有可能被更优先的中断屏蔽,事件不会被屏蔽。,中断和事件的比较,*,嵌入式系统原理与应用,35,EXTI_InitTypeDef,结构体,typedef struct,u32 EXTI_Line;,/,待使能或失能的外部线路,,EXTI_Linex, x=019,EXTIMode_TypeDef EXTI_Mode,;,/,工作模式,,EXTI_Mode_Event,EXTI_Mode_Interrupt,EXTITrigger_TypeDef EXTI_Trigger;,/,触发边沿,,EXTI_Trigger_Falling,/EXTI_Trigger_Rising,EXTI_Trigger_Rising_Falling,FunctionState EXTI_LineCmd;,/,ENABLE/DISABLE,EXTI_,Init,TypeDef;,/,用于初始化外部中断,/,事件的参数,STM32,的,112,个通用,I/O,端口线连接到,16,个外部中断,/,事件(,EXTIx,)线上,其中每根,EXTIx,线上可接,PAx,PGx,共,7,个通用,I/O,端口线其中,之一,。,x=0,1,5,。(,16*7=112,),EXTI_Line,:,另外,3,种其他的外部中断,/,事件控制器的连接如下:,EXTI,线,16,连接到,PVD,输出;,EXTI,线,17,连接到,RTC,闹钟事件;,EXTI,线,18,连接到,USB,唤醒事件。,可以通过,GPIO_EXTILineConfig,来选择,同一时刻 EXTx只能响应一个端口的事件触发,主,要由通过,可编程预分频器,驱动的,16,位自动装载,计数器,+,自动装载寄存器,构成,。,通用定时器时基单元,时基单元包含: 计数器寄存器,(TIMx_CNT) ,预分频器寄存器,(TIMx_PSC),(带有,缓冲器,,即影子寄存器),自动装载寄存器,(TIMx_ARR),(带有,缓冲器,,即影子寄存器),TIMx_ARR,TIMx_CNT,TIMx_PSC,CK_PSC,CK_CNT,AutoReload Register,PSC:Prescaler 预分频器,/* TIM Time Base Init structure definition */,t,ypedef struct,u16 TIM_Period,;/,设置通用定时器,TIMx,的定时周期,u16 TIM_Prescaler;,/,设置通用定时器,TIMx,的预分频值,u16 TIM_ClockDivision,;/,用于对通用定时器,TIMx,的内部,/,时钟,TIMxCLK(to TIM2,3,4,5,6&7),进行分频采样,u16 TIM_CounterMode,;/,设置通用定时器,TIMx,的计数模式,u8 TIM_RepetitionCounter;,/,重复寄存器值,仅在使用,/TIM1,和,TIM8,的高级功能时有用, TIM_TimeBase,Init,TypeDef;,TIM_TimeBaseInitTypeDef,定时器的定时时间主要取决于,定时周期,TIM_Period,和,预分频值,TIM_Prescaler,。,例如,当,TIM_Period=35999,,,TIM_Prescaler=1999,,表示对,TIMxCLK,频率,,经,2000,分频,得到脉冲频率作为定时器,计数脉冲,当通用定时器累计,36000,个脉冲时(即定时时间到),产生一个,更新事件,或者,中断,。,TIMx_ARR,TIMx_CNT,TIMx_PSC,TIM2CLK,TIM2,counter,clock,AutoReload Register,通用定时器,TIMx,的定时时间:假设,TIMxCLK = 72MHz,T= (TIM_Period+1),(TIM_Prescaler+1) / TIMxCLK = (35999+1),(1999+1) / 72MHz = 1s,TIM_TimeBaseInitTypeDef,*,嵌入式系统原理与应用,40,串口收发控制,发送和接收控制部分有CR1、CR2、CR3控制寄存器及,1,个状态寄存器SR;,通过向寄存器写入各种控制参数,来控制发送和接收,如停止位、中断等;,串口的状态在任何时候都可从状态寄存器中查询得到。,CR3,*,嵌入式系统原理与应用,41,USART,中断请求,如果设置了对应的使能控制位,这些,事件,就可以产生各自的,中断,。,T,ransmission,C,omplete,TXE,即,Tx,DR,E,mpty,*,嵌入式系统原理与应用,42,USART,中断映像图,发送中断,接收中断,例:,发送完成后,TXE,、,TC,会置位(,TXE,先于,TC,置位,),此时如果,TXEIE,或,TCIE,被设置,就会进入相应中断处理程序。,USART,_InitTypeDef,typedef struct,u32 USART_BaudRate;,u16 USART_WordLength;,u16 USART_StopBits;,u16 USART_Parity;,u16 USART_HardwareFlowControl;,u16 USART_Mode;,.,/,同步模式,USART_,Init,TypeDef,;,/,用于初始化,USART,x,串口的参数(包括波特率、字长,即数据位、停止位、奇偶效验位、硬件流控制、工作模式),/,异步模式,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!