STM32单片机技术与应用项目教程 课件全套 项目1-7 认识STM32单片机系统 - 芯片温度和直流电压信号检测设计_第1页
STM32单片机技术与应用项目教程 课件全套 项目1-7 认识STM32单片机系统 - 芯片温度和直流电压信号检测设计_第2页
STM32单片机技术与应用项目教程 课件全套 项目1-7 认识STM32单片机系统 - 芯片温度和直流电压信号检测设计_第3页
STM32单片机技术与应用项目教程 课件全套 项目1-7 认识STM32单片机系统 - 芯片温度和直流电压信号检测设计_第4页
STM32单片机技术与应用项目教程 课件全套 项目1-7 认识STM32单片机系统 - 芯片温度和直流电压信号检测设计_第5页
已阅读5页,还剩338页未读 继续免费阅读

下载本文档

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

文档简介

项目一

认识STM32单片机系统任务1.1认识STM32单片机任务1.2了解STM32F4单片机内部存储器结构任务1.3了解STM32F4单片机时钟树结构与功能任务1.4认识STM32F4单片机的最小系统电路项目一

认识STM32单片机系统任务1.1认识STM32单片机【知识目标】了解STM32单片机的结构功能。掌握STM32F407ZGT6单片机的内部基本结构与外部引脚的功能。【能力目标】能够清晰阐述单片机的发展脉络与趋势。会依据STM32单片机技术手册分析各部分电路结构与功能。能够熟练运用相关工具与软件完成STM32单片机程序下载的搭建与操作。【素质目标】培养系统学习能力。培养查阅设计资料的能力。培养分析问题的能力。1.单片机的介绍3.STM32F4单片机引脚2.STM32单片机的系列产品本节学习内容:4.STM32F4单片机电源引脚与功能5.STM32F4单片机复位电路结构6.STM32F4单片机时钟源7.STM32F4单片机AD转换外部参考电源8.STM32F4单片机启动模式设置引脚9.STM32F4单片机JLINK下载器模式设置10.STM32F4单片机IO端口单片机的介绍

单片微型计算机简称单片机,是一种集成电路芯片,是采用超大规模集成电路技术把计算机系统集成到一块硅片上构成的一个小而完善的微型计算机系统,包括具有数据处理能力的中央处理器CPU、只读存储器ROM、随机存储器RAM、多种I/O口和中断系统、定时器/计数器等,并且通过内部的地址总线、数据总线、控制总线将各部分功能电路组合为一个整体。中央处理器CPU中断系统多种I/O定时/计数器只读存储器ROM随机存储器RAM内部总线内部中断外部中断输入/输出设备现代人类生活中所用的每件电子和机电产品中几乎都会集成有单片机。现代人类生活中所用的每件电子和机械产品中几乎都会集成有单片机。单片机早期阶段:主要用于简单的计算和控制任务,都是4位或8位的,主要有Intel4004、Intel8008和MCS-48系列。单片机微型计算机(SingleChipMicrocomputer)

发展阶段:主要的技术发展方向是不断扩展满足嵌入式应用要求的各种外围电路与接口电路,凸显其智能化控制能力,它所涉及的领域与使用行业相关。主要有MCS-51系列、STM32系列。微控制器(MicroControllerUnit)最新阶段:通过将应用系统的最大化解决方案集成到单个芯片上来提高系统的效率和可靠性。SOC不仅包含了MCU的所有功能,还进一步集成了更多的系统资源,如USB、ETH等,适用于高性能、高集成的应用场景‌。片上系统(SystemonChip)SCMMCUSOC国产32位单片机1.

‌兆易创新GD32系列‌:兆易创新在32位通用MCU市场上排名第一,其GD32系列单片机基于RISC-V内核,是全球首个32位通用单片机。该系列单片机在性能和功耗上表现出色,适用于各种嵌入式应用。2.‌灵动微MM32系列‌:灵动微电子的MM32系列单片机基于ARMCortex-M0及Cortex-M3内核,包括针对通用高性能市场的MM32F系列、针对超低功耗及安全应用的MM32L系列等。这些单片机具有丰富的外设资源和良好的性能,适用于多种应用场景。3.‌华大HC32系列‌:华大的HC32系列单片机针对高端智能硬件、数字电源、高性能变频器等行业应用而设计。该系列单片机基于ARMCortex-M4内核,具有高性能、低功耗和丰富的外设资源等特点。4.‌南京沁恒CH32系列‌:南京沁恒的CH32系列单片机以RISC-V3A处理器为核心,具有强大的功能和显著的性价比优势。该系列单片机适用于各种需要高性能和低功耗的嵌入式应用。5.‌华芯微特SWM32系列‌:华芯微特的SWM32系列单片机基于ARM公司CortexTM-M4内核,具有高性能、低功耗、代码密度大等突出特点。这些单片机适用于工业控制、白色家电、电机驱动等诸多应用领域。6.‌雅特力AT32系列‌:雅特力的AT32系列单片机也是一款优秀的国产32位单片机,具有广泛的应用领域和良好的市场口碑。国内高职第一颗国产32位MCU芯片“苏信一号”“苏信一号”是江苏信息职业技术学院微电子学院居水荣教授、丁晟博士率领的师生联合研发团队,与龙芯中科技术股份有限公司联合研制的基于开源龙芯架构32位MCU处理器芯片,围绕车载多传感互联控制应用背景,基于开源龙指令架构(LoongArch)研发,是一块嵌入式低功耗高性能系统级芯片,全面支持龙芯loongarch32位精简版指令集,具备自主可控的指令系统。:该芯片的成功流片标志着我国高职院校在高端芯片自主研发领域迈出了历史性的一步,对于推动我国集成电路产业的发展,尤其是车用芯片领域的发展具有重要意义。

STM32单片机于2007年由意法半导体公司推出32位微控制器,采用高性能、低成本、低功耗的嵌入式应用设计的ARMCortex®-M0、M0+、M3、M4和M7内核。意法半导体公司早期推出的驱动库,开发人员可通过调用驱动库中的API函数开发STM32单片机程序。传统单片机程序的开发方式,直接与硬件相关,程序编写直接面对底层的部件、寄存器和引脚。MCS-51单片机即采用这种开发方式,但由于STM32单片机系统架构过于复杂,学习难度太大,因此它始终没有成为主流的STM32单片机程序开发方式。STD库寄存器继STD库之后由意法半导体公司推出的新型驱动库,支持全系列STM32单片机产品,也被直接嵌入了意法半导体公司推出的STM32CubeIDE软件中,用户可直接使用该软件进行图形化配置生成初始化代码,再完成STM32单片机程序其他代码的编写,开发效率得到了极大提高。HAL/LL库STM32开发方式STM32单片机的系列产品1.STM32单片机家族图谱图1-1STM32单片机家族图谱2.STM32F40x/41x

系列单片机内部资源图1-2STM32F40x/41x系列单片机内部资源3.STM328大系列

产品资源图1-3STM328大系列产品资源

STM32单片机命名规则以STM32F407ZGT6为例:STM32:其中ST(意法半导体)表示的是一个公司的名字,没有什么特别的含义;M表示的是微控制器;32表示的是这个微控制器是32位的。F407:F4表示的是STM32使用的M4内核(所谓的M4内核指的是Cortex-M4,这对应的内核其实是表示的是采用了对应的一种架构),但并不是说明F1就是用Cortex-M1,F1是采用Cortex-M3内核架构,407代表这个是高性能。Z:Z这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚,I代表引脚个数为176。G:G这一项代表内嵌Flash容量,其中6代表32K字节Flash,8代表64K字节Flash,B代表128K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash,G代表1M字节Flash。T:T这一项代表封装,其中H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装。6:6这一项代表工作温度范围,其中6代表-40--85°℃,7代表-40--105℃℃。STM32F4单片机引脚CPU最高频率为168MHz;内部1024KFLASH存储器,192K的RAM;供电电压最高3.6V,最低1.8V;12个16位定时器,2个32位定时器,2个16位电机控制PWM同步定时器;3个12位的ADC,24个ADC输入通道;2个12位DAC电路;3个SPI通信接口,2个I2S通信接口,3个I2C通信接口;4个USART通信接口和2个UART通信接口;2个CAN通信接口,1个SDIO通信接口,1个静态储存器FSMC通信接口,1个USB2.0协议的全速USBOTG_FS,1个符合USB2.0协议的高速USBOTG_HS接口,1个最高工作频率可达100MHz的工业以太网ETHERNET接口,1个DCMI数字摄像头接口;一个随机数发生器(RNG);图1-4STM32F407ZGT6单片机引脚排布STM32F407ZGT6单片机封装形式为LQFP144,共144的引脚,按逆时针排列,各种功能引脚与内部的硬件电路结构相关。STM32F4单片机引脚STM32F4单片机电源引脚与功能电源的供电电压为1.8V-3.6V之间,通常采用3.3V电源进行供电,内部的线性数字电压调节器输出1.2V数字电源供内部使用。引脚名功能VDD数字电源正极引脚VSS数字电源负极引脚VDDA模拟电源正极引脚VSSA模拟电源负极引脚VBAT电池正极输入端Vcap_1、Vcap_2引脚连接滤波电容,从而实现电源的稳压作用。STM32F4单片机复位电路结构STM32单片机的复位方式有系统复位、上电复位、备份区复位。图1-5复位电路内部结构系统复位包括:外部复位WWDG(窗口看门狗)复位IWDG(独立看门狗)复位软件复位低功耗管理复位时钟源内部时钟源外部时钟源内部低速时钟源LSI——32KHz内部高速时钟源HSI——16MHz外部高速时钟信号HSE——OSC_IN(PH0)、OSC_OUT(PH1)外部低速时钟信号LSE——OSC32_IN(PC14)、OSC32_OUT(PC15)STM32F4单片机时钟源STM32F4单片机AD转换外部参考电源AD转换的参考电压可以选择外部参考电源:外部参考电源的正极输入引脚为VREF+,电压值范围为VDDA~1.8V(VDDA的最大值为3.6V)。外部参考电源的负极输入引脚为VREF-(VSSA)。表1-1STM32F407系列单片机启动模式启动引脚选择启动模式说明BOOT1引脚BOOT0引脚X0MainFlashMemory从主闪存启动01SystemMemory从系统存储器启动11EmbeddedSRAM从内部静态随机存储器启动STM32F4单片机启动模式设置引脚从主闪存启动的情况较多,即从用户编写的程序处启动。从系统存储器启动一般用于使用串口下载用户编写的程序,上电复位后进入ST半导体公司预置的启动加载程序(BootLoader)并执行程序功能。STM32F4单片机JLINK下载器模式设置图1-6JLINK仿真器JLINK采用JTAG接口;JLINK下载调试有两种方式可供选择:JTAG模式SWD模式STM32F4单片机JLINK下载器模式设置1.JTAG模式图1-710针JTAG端口图1-814针JTAG端口图1-920针JTAG端口STM32F4单片机JLINK下载器模式设置1.JTAG模式尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚的功能完全相同。不同的公司会自己定义专属JTAG端口,来下载或调试程序。序号引脚名说明1TMS测试模式选择信号,输入信号,必选信号,连接到STM32F407ZGT6单片机的PA13(JTMS/SWDIO)2TCK测试时钟信号,输入信号,必选信号,连接到STM32F407ZGT6单片机的PA15(JTCK/SWCLK)3TDI测试数据输入信号,输入信号,必选信号。,连接到STM32F407ZGT6单片机的PA14(JTDI)4TDO测试数据输出信号,输出信号,必选信号,连接到STM32F407ZGT6单片机的PB3(JTDO/TRACESWO)5TRST内部TAP控制器复位信号,输入信号,低电平有效,可选信号,连接到STM32F407ZGT6单片机的PB4(JTRST)6RTCK时钟返回信号,输出信号,可选信号,不使用可以接地7SRST系统复位信号,输入信号,通常与目标电路板复位信号相连,低电平有效,连接到STM32F407ZGT6单片机的NRST引脚8VREF检测目标板上的电源电压,确定JTAG端口使用的逻辑电平,判断目标板上的电源电压是3.3V还是5V表1-2JTAG接口引脚STM32F4单片机JLINK下载器模式设置2.SWD模式图1-1020针SWD端口采用SWD模式JLink只需要SWDIO、SWCLK、GND三根线即可与目标板实现通讯,可以实现程序的下载、单步调试等功能,但不能检测目标板电压、不能给目标板供电、通讯速度下降,其他功能与完整版JLink的功能相同。图1-1110针SWD端口STM32F4单片机JLINK下载器模式设置2.SWD模式序号引脚名说明1VCC连接目标板电源电压2SWDIO串口模式的数据输入输出端口,连接到STM32F407ZGT6单片机的PA13(JTMS/SWDIO)3SWCLK串口模式的时钟线,连接到STM32F407ZGT6单片机的PA14(JTCK/SWCLK)4SWO串口模式跟踪输出端口,连接到STM32F407ZGT6单片机的PB3(JTDO/TRACESWO)5RESET连接目标板复位引脚,对应到STM32单片机的NRST输入引脚6GND连接到目标板接地表1-3SWD接口引脚STM32F4单片机I/O端口STM32F407ZGT6单片机的I/O端口包括PA(PA0~PA15)、PB(PB0~PB15)、PC(PC0~PC15)、PD(PD0~PD15)、PE(PE0~PE15)、PF(PF0~PF15)、PG(PG0~PG15)、PH(PH0、PH1)。I/O端口可以复用作为其它功能端口使用,如当使用内部串口功能USART1时,通过设置内部寄存器参数,可将PA9、PA10引脚复用为USART1的串口输入和输出引脚使用,而不再作为通用I/O口使用。可以根据需要将对应的功能重定位到其他相映的引脚上,如将USART1的串口输入和输出引脚通过设置映射到PB6、PB7引脚,具体的设置方法可以查阅数据手册和器件手册。本节总结1.单片机的介绍3.STM32F4单片机引脚2.STM32单片机的系列产品4.STM32F4单片机电源引脚与功能5.STM32F4单片机复位电路结构6.STM32F4单片机时钟源7.STM32F4单片机AD转换外部参考电源8.STM32F4单片机启动模式设置引脚9.STM32F4单片机JLINK下载器模式设置10.STM32F4单片机IO端口任务1.2STM32F4单片机内部存储器结构【知识目标】理解STM32单片机的存储器空间结构。【能力目标】能准确指出程序代码在Flash中的存储地址范围、数据在SRAM中的地址范围。【素质目标】培训系统学习能力。查阅设计资料的能力。培养分析问题的能力。1.STM32F4单片机的FlashROM结构3.STM32F4单片机的Peripherals结构2.STM32F4单片机的SRAM结构本节学习内容:Cortex-M4的存储器结构采用统一编址方式,并采用32位寻址,寻址范围为0x00000000~0xFFFFFFFF,共4GB寻址空间。4GB寻址空间被分为Block0~Block7,共8个模块,每个存储空间为512MB。STM32F4单片机的FlashROM结构只读存储器

(FlashReadOnlyMemory,FlashROM)位于BLOCK0区域,地址范围为0x00000000~0x1FFFFFFF。STM32F407ZGT6单片机的用户Flash

存储器的容量为1MB,地址范围为0x08000000~0x080FFFFF。Flash存储器用于存放用户编写的程序。STM32F4单片机的SRAM结构静态随机存储器(StaticRandomAccessMemory,SRAM)位于BLOCK1中,地址范围为0x20000000~0x3FFFFFFF。STM32F407ZGT6单片机中给用户使用的SRAM的存储器空间为192K,范围为0x20000000~0x2002FFFF。SRAM也称为数据存储器,一般用于存放单片机运行过程中产生的临时变量,不具备断电保持功能。STM32F4单片机的Peripherals结构片上外设映射地址(Peripherals)位于BLOCK2中,地址范围为0x40000000~0x5FFFFFFF。Peripherals的作用是作为片上外设的接口,单片机程序通过访问Peripherals实现间接控制对应的片内外设。STM32F4单片机内部存储器结构总结:STM32F4单片机的FlashROM结构位于BLOCK0区域,用户使用的地址范围为0x08000000~0x080FFFFF。3.STM32F4单片机的Peripherals结构位于BLOCK2中,地址范围为0x40000000~0x5FFFFFFF。2.STM32F4单片机的SRAM结构位于BLOCK1中,用户使用的地址范围为0x20000000~0x2002FFFF。任务1.3了解STM32F4单片机时钟树结构与功能【知识目标】理解STM32单片机的内部时钟树结构。【能力目标】能够根据项目的具体需求准确设置各个时钟源、倍频系数、分频系数。【素质目标】培训系统学习能力。培训查阅设计资料的能力。培养分析问题的能力。STM32F4单片机时钟树结构与功能①①内部高速时钟源HSI由RC震荡电路产生,频率为16MHz。②②外部高速时钟源HSE外接晶振频率范围为4~26MHz常用的外部HSE时钟频率为8MHz。③③锁相环PLL时钟锁相环倍频输出,其时钟输入源可选择HSI或HSE。通过配置PLL参数调整PLL输出值,可以获得168MHz时钟信号。④④外部低速时钟LSE典型频率为32.768KHz。⑤内部低速时钟LSI由RC震荡电路产生,频率为32KHz。⑤STM32F4单片机时钟树结构与功能

XN/M/Q/PSTM32F4单片机时钟树结构与功能XN/M/Q/P例:如采用HSE(8MHz)作为PLL的时钟源,将N设置为336、M设置为8、P设置为2、Q设置7,则

STM32F4单片机时钟树总结1.时钟源:HSI、HSE、PLL、LSI、LSE2.时钟生成与倍频机制:锁相环(PLL)运用任务1.4认识STM32F4单片机的最小系统电路【知识目标】掌握STM32单片机最小系统的组成。【能力目标】能够根据STM32F4单片机的数据手册,独立设计并绘制出完整且正确的最小系统电路原理图。【素质目标】培训系统学习能力。培养查阅设计资料的能力。培养分析问题的能力。STM32F4单片机的最小系统电路图1-13STM32F407ZGT6的最小系统电路电源时钟电路复位电路下载电路STM32F4单片机的最小系统电路1.电源数字电源接3.3V电源模拟电源接3.3V电源VBAT备用电源接3.3V电源Vcap_1、Vcap_2接2.2μF滤波电容STM32F4单片机的最小系统电路2.时钟电路外部高速时钟接8MHz晶振外部低速时钟接32768Hz的晶振STM32F4单片机的最小系统电路3.复位电路手动复位电路上电复位电路PDR_ON上电复位控制电路STM32F4单片机的最小系统电路4.下载电路连接到JTAG端口STM32F4单片机的最小系统电路STM32F407ZGT6最小系统总电路数字电源接3.3V电源模拟电源接3.3V电源VBAT备用电源接3.3V电源滤波电容接2.2μF电容。外部高速晶振接8MHz晶振外部低速时钟接32768Hz的晶振复位电路包括手动复位和上电复位电路下载电路连接到JTAG端口本节总结电源时钟电路复位电路下载电路项目二STM32F4单片机的编译集成环境MDK5的设置任务2.1认识STM32官方标准固件库与MDK任务2.1认识STM32官方标准固件库与MDK任务2.2新建STM32F4单片机项目工程项目二STM32F4单片机的编译集成环境MDK5的设置任务2.1认识STM32官方标准固件库与MDK【知识目标】了解STM32官方STD标准固件库与MDK编辑界面。【能力目标】能够阐述STM32官方标准固件库的架构组成。【素质目标】培训系统学习能力。查阅设计资料的能力。培养分析问题解决问题的能力。1.STM32F4单片机的官方标准固件库下载3.STM32F4官方标准固件库包2.CMSIS标准本节学习内容:4.STM32F4单片机的关键配置文件5.系统启动文件6.MDK简介STM32F4单片机的官方标准固件库下载ST公司为了方便用户开发编写程序,提供了一套标准的STM32F4固件库,该固件库对内部的硬件电路功能以函数的形式提供了访问接口。可以通过查看库函数的源程序,了解具体对寄存器的操作过程。STM32标准外设库的下载:ST官网下载/Designresource/list/STM32%20MCU/firmware_software/firmware_software开源电子网CMSIS标准CMSIS标准英文全称是CortexMicrocontrollerSoftwareInterfaceStandard,ARMCortex微控制器软件接口标准。任何一个Cortex-M4芯片,内核结构都完全相同,不同的是芯片的存储器容量、片上外设、IO以及其他模块的区别。ARM是一个做芯片标准的公司,它负责的是芯片内核的架构设计。TI、ST等公司并不做标准,他们根据ARM公司提供的芯片内核标准设计自己的芯片。CMSIS标准图2-1基于CMSIS框架的应用程序基本结构CMSIS标准图2-1基于CMSIS框架的应用程序基本结构CMSIS框架内分为3个基本功能层:内核外设访问层:由ARM公司实现,包含了名称定义、地址定义、存取内核寄存器和外围设备的协助函数。同时也为RTOS(实时操作系统)定义了独立的内核接口函数。中间件访问层:由ARM公司实现,芯片厂商提供更新,主要负责当以中间件访问的应用程序接口API函数。器件级外设访问层:由芯片厂商实现,包含了定义硬件寄存器的地址以及外设的访问函数,比如ST公司提供的固件库外设驱动文件(stm32f40x_gpio.c等文件)。另外厂商会对异常向量进行扩展,以处理相应异常。STM32F4官方标准固件库包介绍下载“STSW_STM32065_STM32F4单片机DSP与标准外设库”后解压缩后如图2-2所示:图2-2“STSW_STM32065_STM32F4单片机DSP与标准外设库”内容STM32F4官方标准固件库包介绍STM32F4官方标准固件库包介绍STM32F4官方标准固件库包介绍STM32F4官方标准固件库包介绍Libraries文件夹里面的文件在建立工程的时候会使用。STM32F4官方标准固件库包介绍包含ST公司提供的官方实例(常用的硬件功能应用),用户可以参考这些实例编写自己的开发程序,缩短开发周期。存放工程模板,给出了常用的集中开发环境下的项目模板。STM32F4官方标准固件库包介绍固件库的帮助文档,在开发过程中会用到。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明1core_cm4.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Include该头文件是CMSIS的核心文件,提供进入Cortex-M4内核接口。用户无须修改该文件。2stm32f4xx.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\IncludeSTM32F4片上外设访问层头文件,该文件至关重要,对系统寄存器进行了定义声明以及内存操作,该文件同时还包含了时钟的相关定义、FPU和MPU单元开启定义、中断相关定义等。3system_stm32f4xx.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include片上外设接入层系统头文件。主要是申明设置系统及总线时钟相关的函数。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明4system_stm32f4xx.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates该文件是在系统启动时对整个系统和时钟系统进行配置,系统启动后首先要调用该文件中的SystemInit函数。5stm32f4xx_it.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4x_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Template用于集中编写中断函数6stm32f4xx_it.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4x_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templatestm32f4xx_it.c对应的头文件。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明7stm32f4xx_conf.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4x_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Template外设驱动配置文件,通过修改该文件中所包含的外设头文件,用户启动或禁用外设驱动。8stm32f4xx_rcc.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\src与系统时钟RCC相关的一些操作函数,主要是对一些时钟的配置和使能。9stm32f4xx_rcc.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\incstm32f4xx_rcc.c对应的头文件。STM32F4单片机的关键配置文件表2-1STM32F4单片机的关键配置文件序号文件所在目录说明10misc.c\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\src包含中断优先级以及内核中滴答定时器的配置操作函数,在实际设计中会经常用到misc.c和misc.h这两个文件。11misc.h\stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Driver\incmisc.c对应的头文件。系统启动文件系统的启动文件系统启动文件完成以下工作:初始化堆栈指针SP。初始化PC指针,将指针PC设置为“Reset_Handler”,系统启动后从“Reset_Handler”向量入口开始执行程序。初始化中断向量表。配置系统时钟,调用SystemInit。系统启动文件将栈的区域“Stack_Size“大小设置为0x00000400(1K字节)*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************系统启动文件

*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************系统启动文件开辟一个栈空间,栈空间的标号为“Stack_Mem”,栈空间大小为“Stack_Size”。SPACE伪指令用于开辟一个空间。*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************标号“__initial_sp”表示了堆空间的顶部,也就是栈顶。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************

代码定义了一个名为“HEAP”的数据段,标号“__heap_base”表示了的数据段的底部,标号“__heap_limit”表示了堆的顶部。系统启动文件通过上述程序代码可以看出,栈的顶部和堆的底部是连接在一起的,在程序运行中,当发生进栈操作时是向RAM的低地址方向存储临时变量。而堆的作用是分配变量,向高地址方向分配RAM的存储空间。

当设计程序非常庞大时,运行过程中有可能会出现堆栈溢出的情况。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************指定当前文件保持堆栈八字节对齐。指示编译器将使用Thumb指令集。在使用Thumb具体指令前要使用该指令进行声明。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************定义了一个名为“RESET”的数据段,并设置为只读属性,通过“EXPORT”将标号“__Vectors”、“__Vectors_End”、“__Vectors_Size”声明为全局量,可供其他源文件访问。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************DCD伪指令在RAM中分配了连续的存储空间并进行了初始化设置。分配了连续字节的存储空间,并进行了初始化设置,初始化值为“__initial_sp”,“__initial_sp”标号代表了地址值。“__Vectors”标号也同样代表了当前数据段在RAM中的地址值。标号“__Vectors_End”表示了上述分配空间结束后的地址值。标号“__Vectors_Size”代表了分配的向量空间的总字节数。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************分配了名为“|.text|”只读的程序存储空间段“PROC”和“ENDP”构成了一个过程,相当于定义了一个函数,在”PROC”与“ENDP”之间的代码构成了一个子程序的内容,”PROC”与“ENDP”成对出现。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************标号Reset_Handler相当于函数名,对应了这段程序的首地址。EXPORT用于声明,声明Reset_Handler标号为全局标号,其它源文件可以访问。[WEAK]用于指示如果有其它源文件定义Reset_Handler标号,则屏蔽掉此处的声明。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************通知编译器使用其它源文件中的“SystemInit”、“__main”标号。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************将“SystemInit”标号对应的值写入内部寄存器R0中。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************跳转到寄存器R0内容对应的地址处执行子程序,并将指令切换回ARM指令集。系统启动文件*******************************************************************************FileName:startup_stm32f40_41xxx.s*******************************************************************************定义了标号名称为NMI_Handler的子程序,ENDP:表示程序的结束,[WEAK]:该段程序的定义为弱定义方式,其它源文件定义了“NMI_Handler”函数则屏蔽掉此处的声明。MDK简介KeilMDK,也称MDK-ARM、RealviewMDK,源自于德国的KEIL公司,是ARM公司推出的针对各种嵌入式处理器的软件开发工具。图2-4MDK5启动界面MDK简介KeilMDK,也称MDK-ARM、RealviewMDK,源自于德国的KEIL公司,是ARM公司推出的针对各种嵌入式处理器的软件开发工具。图2-5MDK5的组成MDK简介KeilMDK,也称MDK-ARM、RealviewMDK,源自于德国的KEIL公司,是ARM公司推出的针对各种嵌入式处理器的软件开发工具。MDK5下载网址:/demo/eval/arm.htmARM.CMSIS.5.8.0pack安装包和Keil.STM32F4xx_DFP.2.16.0.pack安装包下载网址:/dd2/Pack/#!#eula-containerMDK安装教程本节总结1.STM32F4单片机的官方标准固件库下载3.STM32F4官方标准固件库包2.CMSIS标准4.STM32F4单片机的关键配置文件5.系统启动文件6.MDK简介任务2.2新建STM32F4单片机项目工程【知识目标】掌握使用MDK新建STM32F4设计项目的流程。【能力目标】能够在MDK中成功创建一个全新的STM32F4单片机项目工程。能够根据项目需求,在STM32项目中精准配置相应STD库文件和编译选项。【素质目标】培训系统学习能力。培养查阅设计资料的能力。培养分析问题解决问题的能力。1.创建项目工程并配置项目参数3.在项目中添加自定义延时文件和自定义系统文件2.在项目中添加配置文件本节学习内容:4.添加并配置标准库文件5.启动文件配置6.项目头文件路径配置8.设置下载/调试选项7.设置输出选项9.配置系统时钟参数10.单片机项目编译准备工作:1.下载STM32F4固件库包并解压缩,如图所示:2.安装好MDK53.安装好STM32F4的器件包:Keil.STM32F4xx_DFP.1.0.8.pack1.创建项目工程并配置项目参数1)首先在电脑的硬盘上创建一个文件夹用来存放工程模板,并在该文件夹下新建6个文件夹,如图2-5所示。图2-5新建模板的窗口1.创建项目工程并配置项目参数2)打开MDK软件,执行Project\NewμVisionProject…菜单命令,并将工程路径选择为新建的模板文件下的USER,并保存工程名为template。在弹出的窗口中选择器件,如图2-6所示:图2-6新建项目选择器件将器件选择为:STMicroelectronics/STM4Series/STM32F407/STM32F407ZG/STM32F407ZGTx1.创建项目工程并配置项目参数单击OK后,在弹出的如图2-7所示的“ManageRun-TimeEnvironment”对话框中选择Cancel。操作完成后,USER文件夹下文件如图2-8所示。图2-8USER目录下的文件图2-7“ManageRunEnvironment”对话框2.在项目中添加配置文件1)将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\STM32F4xx_StdPeriph_Drive目录下的inc、src文件夹复制到新建模板目录下的FWLIB文件夹下。固件库中src为驱动STM32F4的库函数文件。inc则是这些库文件对应的头文件。2)将与内核和启动相关的文件复制到模板文件夹下的core文件夹内。将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目录下的startup_stm32f40_41xxx.s启动文件复制到CORE文件夹内。将stm32f4_dsp_stdperiph_lib_V1.8.0\Libraries\CMSIS\Include目录下的core_cm4.h、core_cmsimd.h、core_cmFunc.h、core_cmInstr.h复制到CORE文件夹内。2.在项目中添加配置文件3)将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include目录下的stm32f4xx.h、system_stm32f4xx.h文件复制到USER目录下。4)将stm32f4_dsp_stdperiph_lib_V1.8.0\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates目录下的main.c、main.h、stm32f4xx_conf.h、system_stm32f4xx.c、stm32f4xx_it.c、stm32f4xx_it.h文件复制到USER文件夹下。2.在项目中添加配置文件文件复制后的user文件夹如图2-9所示。图2-9USER文件夹3.在项目中添加自定义延时文件和自定义系统文件在system文件夹内新建两个文件夹delay、sys,如图2-12所示。图2-12新建sys、delay文件夹在MDK界面执行菜单命令File\New命令,新建文件分别保存在delay文件中和sys文件夹中:delay文件夹中保存的文件名为delay.c和delay.hsys文件夹中保存为sys.c和sys.h3.在项目中添加自定义延时文件和自定义系统文件在STM32编程过程中经常会使用到调用毫秒级和微秒级的延时函数,一般使用STM32单片机内部的滴答定时器来设计实现毫秒、微妙延时功能,因此用户可以自己编写滴答定时器的驱动程序。

本模板中的延时驱动函数保存在delay.c文件中,对应的头文件为delay.h。

打开delay.c文件,录入代码内容并保存。3.在项目中添加自定义延时文件和自定义系统文件在STM32编程过程中经常会使用到调用毫秒级和微秒级的延时函数,通常会使用STM32单片机内部的滴答定时器来设计实现毫秒、微妙延时功能,因此用户可以自己编写滴答定时器的驱动程序。

本模板中的延时驱动函数保存在delay.c文件中,对应的头文件为delay.h。

打开delay.c文件,录入代码内容并保存。3.在项目中添加自定义延时文件和自定义系统文件在STM32编程过程中经常会使用到调用毫秒级和微秒级的延时函数,通常会使用STM32单片机内部的滴答定时器来设计实现毫秒、微妙延时功能,因此用户可以自己编写滴答定时器的驱动程序。

本模板中的延时驱动函数保存在delay.c文件中,对应的头文件为delay.h。

打开delay.c文件,录入代码内容并保存。3.在项目中添加自定义延时文件和自定义系统文件打开delay.h文件,录入如下代码并保存。delay.h对delay.c中定义的函数进行了声明,包含了delay.h头文件的源文件可以使用delay.h中声明过的函数。3.在项目中添加自定义延时文件和自定义系统文件打开sys.h文件,并录入代码并保存。sys.h文件定义了STM32F4的IO口输入读取宏定义和输出宏定义,在编程操作时通过有参宏的使用能够直接读取、设置I/O端口的引脚电平,为程序设计提供了方便。创建用户自己的系统文件sys.c,并保存在sys文件夹内。用户可以将自己创建的系统函数保存在sys.c文件内。打开新建的MDK模板项目,如图2-10所示,在“Target1”上单击鼠标右键,添加组,并将组改名为USER、FWLIB、SYSTEM、HARDWARE、CORE,与模板文件夹下文件夹名称相对应,如图2-11所示。图2-10新建组操作图2-11新建并分组后的项目4.添加并配置标准库文件4.添加并配置标准库文件单击工具栏中的,在弹出的如图2-13所示的窗口界面下,将之前复制的文件添加到修改的组内。图2-13添加文件到FWLIB组操作4.添加并配置标准库文件将src内的源文件全部添加到FWLIB组内,添加后的界面如图2-14所示。由于设计的模板采用的是STM32F407单片机,不需要使用stm32f4xx_fmc.c文件,该文件在STM32F42、STM32F43系列单片机中才会使用,因此可以将该文件移除。图2-14添加FWLIB组文件界面5.启动文件配置

1)将startup_stm32f40_41xxx.s文件添加CORE组内,由于默认添加的文件类型为*.h和*.c,因此在添加该文件时需要将添加文件的类型选择为Allflies(*.*),如图2-15所示。图2-15添加启动文件到CORE组内5.启动文件配置

2)将main.c、system_stm32f4xx.c添加到USER组内,如图2-16所示,如果希望将用户编写的中断响应函数存放在stm32f4xx_it.c文件中则将stm32f4xx_it.c添加到USER包内,如果用户不需要将自己编写的中断响应函数保存在stm32f4xx_it.c中则可以不添加该文件到USER包中。图2-16添加用户文件到USER中5.启动文件配置

3)将delay.c、sys.c文件添加到system组中,如图2-17所示。图2-17添加sys.c和delay.c文件5.启动文件配置

4)添加文件的包内列出对应的包内文件,如图2-18所示。图2-18添加文件后的模板项目6.项目头文件路径配置在MDK集成环境中需要明确指出文件头文件所在路径,否则MDK无法查找到各类元件中需要的头文件。图2-19设置头文件路径单击工具栏内的,在弹出的界面内选择C/C++选项,鼠标左键单击“includePaths”右侧的按钮,在弹出的窗口中在空白处双击鼠标左键,如图2-19所示。6.项目头文件路径配置然后点击单片机右侧的,选择头文件所在的文件夹,如图2-20所示,添加CORE文件夹路径。同时添加USER文件夹、FWLIB\inc、SYSTEM\delay、SYSTEM\sys文件夹路径。图2-20选择头文件路径文件夹6.项目头文件路径配置对于STM32F40系列工程,还需要添加一个全局宏定义标识符。单击工具栏内的,在弹出的界面内选择C/C++选项内的“Define:”操作框内输入“STM32F40_41xxx,USE_STDPERIPH_DRIVER”两个宏定义,并且以英文符号的逗号隔开,如图2-21所示。图2-21设置头文件公共宏定义选中C99Mode,在ANSI的标准确立后,C99标准被ANSI于2000年3月采用,选中该选项编译器则支持C99中的拓展标准。7.设置输出选项单击工具栏内的,在弹出的界面内选择Output选项卡,如图2-22所示.图2-22设置输出选项单击SelectFolderforOgjects,设置目标文件的路径,将目标文件的路径设置在模板目录下的OBJ文件目录下。选中CreateHexFile选项则使系统在进行项目编译时生成HEX文件,HEX文件可以通过烧写工具直接下载到单片机的FLASH内。选中BrowseInformation为了方便查看函数的变量定义。8.设置下载/调试选项单击工具栏内的,在弹出的界面内选择Debug选项卡,如图2-23所示图2-23设置调试选项常用的下载器种类很多,如ST-Link、J-LINK,此处选中J-LINK,将JLINK设备连接后,接通电源。单击图2-23所示的下拉选项旁的“Settings”按钮8.设置下载/调试选项在弹出界面中将Port设置为SW模式,系统自动采用SWD接口,获取相关信息,如图2-24所示。图2-24JLINK调试选项设置8.设置下载/调试选项在图2-24所示窗口中选择FLASHDOWN选项卡,如图2-25所示。图2-25程序下载选项选中ResetandRun选项,当下载完成后,单片机将自动复位执行下载的程序。程序下载擦除选项选择EraseSectors则不会全部擦除单片机内的Flash,程序下载速度快。9.配置系统时钟参数1)在项目中打开system_stm32f4xx.c文件,对启动文件进行修改,将注释中的HSEFrequency(Hz)修改为8000000,PLL_M修改为8。如图2-26所示。图2-26修改注释信息9.配置系统时钟参数2)同时将文件中对PLL_M宏定义修改为8,如图2-27所示。图2-27修改PLL_M宏定义9.配置系统时钟参数3)打开stm32f4xx.h,并将HSE_VALUSE修改为8000000(将stm32f4xx.h文件的只读属性去掉),如图2-28所示。图2-28修改HSE_VALUSE操作10.单片机项目编译项目设置完成后,保存所有的文件和设置,鼠标左键单击工具栏内的对全部的文件进行编译,系统编译后显示编译完成,如图2-29所示。

没有错误和警告,创建了hex文件和.axf文件。图2-29模板项目编译结果本节总结1.创建项目工程并配置项目参数3.在项目中添加自定义延时文件和自定义系统文件2.在项目中添加配置文件4.添加并配置标准库文件5.启动文件配置6.项目头文件路径配置8.设置下载/调试选项7.设置输出选项9.配置系统时钟参数10.单片机项目编译项目三

流水灯、蜂鸣器、I/O按键设计【知识目标】掌握STM32F4单片机IO端口的结构;掌握STM32F4单片机寄存器的功能;掌握STM32F4的标准库的IO端口库函数功能。【能力目标】能够根据端口功能设置IO端口寄存器;能够使用标准库函数完成IO端口的初始化设置;掌握IO端口的模块化程序方法与步骤。【素质目标】培养规范化程序设计习惯;培养分析问题解决问题的能力;培养阅读设计文档资料的能力。项目三基于STM32F407ZGT6的流水灯、蜂鸣器、I/O按键设计任务3.1LED单灯闪烁设计任务3.2蜂鸣器控制设计任务3.3按键控制LED和蜂鸣器设计任务3.1LED单灯闪烁设计学习目标:掌握STM32单片机控制LED闪烁程序设计调试过程;任务功能:实现发光二极管LED1周期为1秒,占空比为50%的连续闪烁功能;知识目标:掌握STM32F4单片机I/O端口结构、功能和功能设置;能力目标:掌握STM32F4单片机I/O端口应用项目的程序设计、调试过程;素质目标:规范程序设计过程,养成良好的程序设计习惯;1.STM32F407ZGT6单片机驱动发光二极管电路结构3.STM32F407ZGT6的I/O端口寄存器结构2.STM32F407ZGT6的I/O端口功能任务3.1LED单灯闪烁设计PC0~PC7驱动发放二极管LED1~LED8低电平点亮发光二极管1.STM32F407ZGT6单片机驱动发光二极管电路结构PH(PH0~PH1)PA(PA0~PA15)

PB(PB0~PB15)

PC(PC0~PC15)

PD(PD0~PD15)

PE(PE0~PE15)

PF(PF0~PF15)

PG(PG0~PG15)2.STM32F407ZGT6的I/O端口功能STM32F4单片机的I/O的端口可以设置为:输入模式输出模式模拟端口模式(AD输入端口、DA输出端口)复用功能模式2.STM32F407ZGT6的I/O端口功能输出模式复用输出复用输入输入模式模拟量出模式模式(MODE[1:0])输出模式(OTYPER)端口速度(OSPEEDR【B:A】)上拉/下来设置(PUPDR【1:0】)I/O端口模式00XX00I/O端口输入模式,浮空输入XX01I/O端口输入模式,上拉XX10I/O端口输入模式,下拉XX11I/O端口输入模式保留(浮空)010四种速度模式设置00I/O端口推挽输出001I/O端口推挽输出,电阻上拉010I/O端口推挽输出,电阻下拉011保留100I/O端口漏极开路输出101I/O端口漏极开路,电阻上拉110I/O端口漏极开路,电阻下拉111保留(I/O端口漏极开路输出)100四种速度模式设置00复用功能推挽001复用功能,推挽,电阻上拉010复用功能,推挽,电阻下拉011保留100复用功能,漏极开路101复用功能,漏极开路,电阻上拉110复用功能,漏极开路,电阻下拉111保留11XX00模拟量端口XX01保留XX10XX11输入STM32F407ZGT6的I/O端口功能总结3.端口设置:上拉、下拉、浮空模式1.工作模式:输入模式、输出模式、复用功能、模拟量模式2.输出模式:输出方式包括推挽输出、开漏输出

输出速度:四种速度选择模式4.设置方法:通过设置寄存器实现①GPIO端口模式寄存器(GPIOx_MODER)(x=A..I)3.STM32F407ZGT6的I/O端口的基本配置寄存器00:输入(复位状态)01:通用输出模式10:复用功能模式11:模拟模式②GPIO端口输出类型寄存器(GPIOx_OTYPER)(x=A..I)③GPIO端口输出速度寄存器(GPIOx_OSPEEDR)(x=A..I)④GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x=A..I)⑤GPIO端口输入数据寄存器(GPIOx_IDR)(x=A..I)⑥GPIO端口输出数据寄存器(GPIOx_ODR)(x=A..I)⑦GPIO端口置位/复位寄存器(GPIOx_BSRR)(x=A..I)⑧GPIO端口配置锁定寄存器(GPIOx_LCKR)(x=A..I)⑨GPIO复用功能低位寄存器(GPIOx_AFRL)(x=A..I)⑩GPIO复用功能高位寄存器(GPIOx_AFRH)(x=A..I)GPIO设备文件:stm32f4xx_gpio.cSTM32GPIO端口操作的接口函数定义stm32f4xx_gpio.hSTM32GPIO端口数据定义STM32I/O端口操作的接口函数定义声明GPIO的几个重要函数1个初始化函数:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);2个读取输入电平函数:uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);2个读取输出电平函数:uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);4个设置输出电平函数:voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);4.LED单灯闪烁项目设计【电路设计】4.LED单灯闪烁项目设计

(1)打开新建的模板项目,修改main.c文件内容,编译;

(2)新建LED驱动文件led.c和led.h,保存至HARDWARE/LED文件夹下;

(3)在MDK环境下添加led.h文件所在的路径;(4)在把各个源文件对应的头文件添加到sys.h中;(5)设计主程序main.c;

温馨提示

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

评论

0/150

提交评论