stm32嵌入式开发第一讲:嵌入式系统开发概述课程安排–何为嵌入式系统–嵌入式系统的特点及发展趋势–嵌入式系统的开发过程–如何成为嵌入式开发人员何为嵌入式系统–嵌入式系统,英文全称为EmbededSystem。–IEEE的定义:嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。–业界普遍采用的定义:嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。理解嵌入式系统–嵌入式系统是与应用紧密结合的,是面向用户、面向产品、面向应用的。–嵌入式系统是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。–嵌入式系统可定制、可裁减。–嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。–嵌入式系统本身不具备自主开发能力。嵌入式系统的基本结构•嵌入式系统可以笼统地分为硬件和软件两部分。嵌入式处理器–嵌入式微处理器EMPU–嵌入式微控制器MCU–嵌入式数字信号处理器EDSP–片上可编程系统SOPC嵌入式系统的特点–嵌入式系统是与应用紧密结合的。–嵌入式系统具有很强的专用性,可定制、可裁减,且必须结合实际系统需求进行合理的裁减利用。–嵌入式系统是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。–嵌入式系统必须有采用专用的开发工具和环境才能进行开发。–嵌入式系统具有通用计算机的功能,但实现了小型化的体积和高的运行可靠性。–嵌入式系统需要根据不同的处理器来进行定制。嵌入式系统的发展趋势–嵌入式处理器的功能越来越强大,而功耗不断降低。–嵌入式系统的人机界面不断强化,应用更加人性化。–嵌入式系统开发环境不断优化,提供了更为丰富的调试功能。–嵌入式系统逐渐强化联网功能。–嵌入式系统开始提供更为丰富的接口。–嵌入式系统越来越渗透到不同的产品中。嵌入式系统的开发过程芯片选择配置硬件平台Bootloader移植操作系统裁减操作系统移植应用程序开发如何成为嵌入式开发人员–要想成为一个比较优秀的嵌入式开发人员,应该牢记“博、专、实践”的原则。•博•专•实践嵌入式操作系统概述–嵌入式操作系统的发展历史•第一阶段(简单操作系统)•第二阶段(通用的嵌人式实时操作系统)•第三阶段(Intemet嵌入式系统)嵌入式操作系统的分类–按照是否免费来分类•免费嵌入式操作系统•收费的嵌入式操作系统–按照系统对相应时间的敏感程度•硬实时系统•软实时系统•非实时系统嵌入式操作系统的特点–能够有效管理复杂的系统资源。–嵌人式操作系统提高了系统的可靠性。–能够把硬件虚拟化。–能够提供库函数、驱动程序、工具集以及应用程序,提高了开发效率,缩短了开发周期。–具有高的系统实时性能。–嵌入式操作系统充分发挥了32位CPU的多任务潜力–嵌入式系统都是为了完成一些特定的任务而设计的,通用型操作系统往往无法满足某些特定的要求。–嵌入式系统的系统资源相对通用系统来说是极为有限的。–嵌入式系统配置灵活。ARM体系结构的特点–体积小、低功耗、低成本、高性能。–支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8/16位器件。–大量使用寄存器,指令执行速度更快。–ARM处理器共有37个寄存器,分为若干个组(BANK)。–大多数数据操作都在寄存器中完成。–ARM处理器有7种不同的处理器模式–寻址方式灵活简单,执行效率高。–指令长度固定。Cortex-M3微处理器–Cortex-M3微处理器采用ARMv7-M架构。–Cortex-M3系列微处理器的主要特点如下:•Thumb-2指令集架构(ISA)的子集。•哈佛处理器架构,在加载/存储数据的同时能够执行指令取指。•三级流水线。•32位单周期乘法。•具备硬件除法。•Thumb状态和调试状态。•处理模式和线程模式。•ISR的低延迟进入和退出。•可中断-可继续的LDM/STM,PUSH/POP。•ARMv6类型BE8/LE支持。•ARMv6非对齐访问。RealViewMDK系统安装需求–最小内存128MB;–硬盘空间剩余至少50M;–Windows98或者后续的操作系统;RealViewMDK的安装RealViewMDK的安装RealViewMDK的安装RealViewMDK的安装RealViewMDK的安装RealViewMDK的安装RealViewMDK的安装RealViewMDK集成开发环境总揽基于ARMCortex-M3的STM32最小开发系统数据传送指令–寄存器间数据传送指令–存储器数据传送指令–索引数据传送指令寄存器间数据传送指令–MOVR8,R3–MVN存储器数据传送指令存储器数据传送指令索引数据传送指令索引数据传送指令数据处理指令–算术四则运算指令–64位乘法指令–逻辑操作指令–移位和循环指令–数据序转指令–位操作指令通用I/O接口的结构通用I/O接口的结构GPIO的功能–通用I/O–单独的位设置或位清除–外部中断/唤醒线–复用功能(AF)和重映射–GPIO锁定机制GPIO的功能配置–输入配置–输出配置–复用功能配置–模拟输入配置复用功能与重映射–OSC_IN引脚和OSC_OUT引脚•OSC_IN/OSC_OUT•PD0/PD1复用功能与重映射复用功能与重映射复用功能与重映射复用功能与重映射复用功能与重映射复用功能与重映射GPIO寄存器结构•typedefstruct•{•vu32CRL;//端口控制寄存器的低字节•vu32CRH;//端口控制寄存器的高字节•vu32IDR;//端口输入数据寄存器•vu32ODR;//端口输出数据寄存器•vu32BSRR;//位置位/复位寄存器•vu32BRR;//位复位寄存器•vu32LCKR;//锁定寄存器•}GPIO_TypeDef;•typedefstruct•{•vu32EVCR;//事件控制寄存器•vu32MAPR;//重映射调试及AF寄存器•vu32EXTICR[4];//配置寄存器•}AFIO_TypeDef;通用I/O接口的编程方法–库函数:•GPIO_DeInit函数•GPIO_AFIODeInit函数•GPIO_Init函数•GPIO_StructInit函数•GPIO_ReadInputDataBit函数•GPIO_ReadInputData函数•GPIO_ReadOutputDataBit函数•GPIO_ReadOutputData函数•GPIO_SetBits函数•GPIO_ResetBits函数•GPIO_WriteBit函数•GPIO_Write函数•GPIO_PinLockConfig函数•GPIO_EventOutputConfig函数•GPIO_EventOutputCmd函数•GPIO_PinRemapConfig函数•GPIO_EXTILineConfig函数Flash闪存的结构–STM32高性能的闪存模块提供了•高达512K字节的容量•10万次以上的擦写次数–在128K的STM32中,闪存由如下两部分组成:•主存储块为16Kx64位。•信息块为320x64位。Flash闪存的基本特性–Flash闪存读取•等待时间•预取•半周期–Flash闪存编程和擦除Flash寄存器结构•typedefstruct•{•vu32ACR;//Flash进入控制寄存器•vu32KEYR;//FPEC关键寄存器•vu32OPTKEYR;//选项字节关键寄存器•vu32SR;//Flash状态寄存器•vu32CR;//Flash控制寄存器•vu32AR;//Flash地址寄存器•vu32RESERVED;//保留•vu32OBR;//选项字节和状态寄存器•vu32WRPR;//选项字节写保护寄存器•}FLASH_TypeDef;•typedefstruct•{•vu16RDP;//读出选项字节•vu16USER;//用户选项字节•vu16Data0;//数据0选项字节•vu16Data1;//数据1选项字节•vu16WRP0;//写保护0的选项字节•vu16WRP1;//写保护1的选项字节•vu16WRP2;//写保护2的选项字节•vu16WRP3;//写保护3的选项字节•}OB_TypeDef;Flash的编程方法–库函数:•Flash_SetLatency函数•Flash_HalfCycleAccessCmd函数•Flash_PrefetchBufferCmd函数•Flash_Unlock函数•Flash_Lock函数•Flash_ErasePage函数•Flash_EraseAllPages函数•Flash_EraseOptionBytes函数•Flash_ProgramWord函数•Flash_ProgramHalfWord函数•Flash_ProgramOptionByteData函数•Flash_EnableWriteProtection函数Flash_ReadOutProtection函数•Flash_UserOptionByteConfig函数Flash的编程方法(续)–库函数:•Flash_GetUserOptionByte函数•Flash_GetWriteProtectionOptionByte函数•Flash_GetReadOutProtectionStatus函数•Flash_GetPrefectchBufferStatus函数•Flash_ITConfig函数•Flash_GetFlagStatus函数•Flash_ClearFlag函数•Flash_GetStatus函数•Flash_WaitForLastOperation函数ADC系统概述–STM32芯片内部集成的12位ADC:•是一种逐次逼近型模拟数字转换器。•具有18个通道•可测量16个外部和2个内部信号源。–ADC系统各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC系统概述–STM32的ADC系统所用到的引脚,有如下几个:•VREF+•VDDA•VREF-•VSSA•ADC_IN[15:0]•EXTSEL[2:0]•JEXTSEL[2:0]ADC系统功能特性–ADC开关控制–ADC时钟–ADC通道选择–ADC的转换模式–ADC的扫描模式–ADC的注入通道管理–间断模式–ADC的校准模式–可编程的通道采样时间–外部触发转换–DMA请求中断模拟看门狗ADC的数据对齐•ADC_CR2寄存器的ADC的数据对齐ALIGN位选择转换后数据储存的对齐方式。双ADC模式–同时注入模式–同时规则模式–快速交替模式–慢速交替模式–交替触发模式–独立模式–组合模式•同时注入模式+同时规则模式•同时规则模式+交替触发模式•同时注入模式+交替模式温度传感器–温度传感器在内部和ADC_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。–温度传感器的参数:•支持的温度范围为-40到125度•精确度为+/-1.5°C•模拟输入的采样时间必须大于2.2μs。ADC寄存器结构•typedefstruct•{•vu32SR;//ADC状态寄存器•vu32CR1;//ADC配置寄存器1•vu32CR2;//ADC配置寄存器2•vu32SMPR1;//ADC样本时间寄存器1•vu32SMPR2;//ADC样本时间寄存器2•vu32JOFR1;//ADC位移寄存器1•vu32JOFR2;//ADC位移寄存器2•vu32JOFR3;//ADC位移寄存器3•vu32JOFR4;//ADC位移寄存器4•vu32HTR;//ADC高压域值寄存器•vu32LTR;//ADC低压域值寄存器•vu32SQR1;//ADC用于常规组的序列选择器寄存器1•vu32SQR2;//ADC用于常规组的序列选择器寄存器2•vu32SQR3;//ADC用于常规组的序列选择器寄存器3•vu32JSQR;//ADC用于常规组的序列选择器寄存器•vu32JDR1;//ADC数据转换注入组寄存器1•vu32JDR2;//ADC数据转换注入组寄存器2•vu32JDR3;//ADC数据转换注入组寄存器3•vu32JDR4;//ADC