《智能光电系统设计》课件 项目4 STM32知识基础.pptx
项目4STM32知识基础
任务目标1、学会并掌握STM32F40X的基础架构、时钟系统、库函数等2、学会KeilMDKARM软件的使用。
4.1STM32F40x系列芯片的系统架构及总线STM32F40x系列芯片的总线结构见图4-1,该总线结构是一个“CPU+外设”的系统。图4-1STM32F40x系列芯片的总线结构
4.1STM32F40x系列芯片的系统架构及总线原理上来说,除Cortex-M3内核以及相关总线之外的单元,均可以被称为外设(Peripherals),如通用输入输出端口(GeneralPurposeInput/OutputPort,GPIO)、数模转换器(Analog-to-DigitalConverter,ADC)、通用同步/异步串行接收/发送器(UniversalSynchronous/AsynchronousReceiver/Transmitter,USART/UART)、定时器(Timer,TIM)、闪存(FLASH)、直接内存访问(DirectMemoryAccess,DMA)等。要使用相关外设,需要对外设相关的寄存器进行正确的配置,而后面要介绍的标准可,在配置寄存器方面具备很大的便利,减轻了学习者的工作量,降低了入门台阶。STM32内核可通过AHB总线、AHB/APB桥控制外设,也可以通过DMA模块,直接操作或读取外设。
4.2STM32F40x系列芯片的时钟系统时钟电路主要给CortexM3内核及外设提供时钟信号,时钟信号对ARM就像心跳对人一样重要。ARM内部都是由许多诸如触发器等构成的时序逻辑电路组成的,只有通过时钟才能驱动ARM一步步地工作。如果没有时钟信号,触发器的状态就不能改变,相应的电路就不能正常工作。另外,为了降低功耗,可以选择性的打开需要使用的外设时钟。
4.2STM32F40x系列芯片的时钟系统STM32F40x系列芯片的时钟系统框图见图4-2,又称时钟树。STM32F40x系列芯片的时钟系统需要通过时钟输入、倍频、分频等实现对各部分的时钟输出。图4-2STM32F407的时钟树
4.2STM32F40x系列芯片的时钟系统STM32F40x有多个时钟源,分别是高速外部时钟(HighSpeedExternalClock,HSE)、低速外部时钟(LowSpeedExternalClock,LSE)、高速内部时钟(HighSpeedInternalClock,HSI)、低速内部时钟(LowSpeedInternalClock,LSI)。HSE一般在4-26MHz之间,由外部晶体振荡器提供,并经锁相环(PhaseLockedLoop,PLL)倍频等处理后作为系统时钟;LSE为也由外部晶体振荡器提供,一般取32.768KHz,常用于实时时钟(Real_TimeClock,RTC);HSI为16MHz,上电默认启动,精度不高;LSI约30KHz,精度不高,一般用于看门狗定时器等。对时钟源信号处置有切换、配置、倍频、分频等程序设计内容。对系统时钟的学习,学习者需要关注时钟源、系统时钟、相关外设时钟等,这些通过软件STM32CubeMX均可以轻松配置。
4.3STM32标准库、HAL库、LL库简介嵌入式技术通过编写程序来实现控制、测量、数据传输等目的。嵌入式技术表现出来均是对芯片引脚的读写,但是根本上来说,则在于对嵌入式芯片内部寄存器的读写,即向寄存器写入数据,或从寄存器读出数据。编写程序的过程,即是对寄存器的读写过程。有两种方式可以实现对寄存器的操作,一是直接操作寄存器,一是通过库函数操作寄存器。下面的程序是直接操作寄存器,让PA0置1的例子。GPIOA-BSRR|=0//直接操作寄存器,PA0置1
4.3STM32标准库、HAL库、LL库简介ST公司为开发者提供了非常方便的开发库,主要有标准外设库SPL(StandardPeripheralLibrary,SPL库)、HAL库(HardwareAbstractionLayer)、LL库(LowLayer)三种。标准外设库提供了很多的库函数,使用时只需要进行库函数的调用即可,程序的编写、维护效率很高;HAL库基于一个配置软件STM32CubeMX,类似于图形化编程,在配置方面非常直观形象,使用简单,程序的可读性很强,尤其是适合于初学者。LL库也可以通过STM32CubeMX产生,更加的小型化,更加的精简,只是硬件的覆盖率还不是很高。下面提供引脚控制的几个例子,以体现几种编程方式的差异:GPIO_SetBits(GPIOA,GPIO_P