【文档说明】第四章-第一节-ARM硬件平台课件.ppt,共(84)页,13.543 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92629.html
以下为本文档部分文字说明:
第四章ARM硬件系统第一节STM32微控制器必备资料Cortex-M3权威指南-经典M3教程指导STM32F10xDATASHEET–器件参数ReferenceManual参考手册—芯片使用方法www.st.com意法半导体官网
www.winsilicon.com.cnST代理商论坛STM32F103VBT6STM32F103VBT6基本特性:内核:ARM32位的Cortex™-M3CPU−最高72MHz工作频率存储器−
128K字节的闪存程序存储器−高达16K字节的SRAM时钟、复位和电源管理−2.0~3.6伏供电(I/O引脚)−上电/断电复位(POR/PDR)、可编程电压监测器(PVD)−4~16MHz晶体振荡器−内嵌经出厂调校
的8MHz的RC振荡器−内嵌带校准的40kHz的RC振荡器−产生CPU时钟的PLL−带校准功能的32kHzRTC振荡器低功耗−睡眠、停机和待机模式−VBAT为RTC和后备寄存器供电STM32F103VB睡眠模式在睡眠模式
下,CPU时钟处于停止状态,但是所有的外设继续运行,除非它们被关闭。电源功耗相应地减少。任一中断或唤醒事件可将微处理器从睡眠模式中唤醒。在睡眠模式下,所有的SRAM和寄存器内的内容被保存下来。停止模式停止模式是
在Cortex-M3的睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HIS和HSERC振荡器的功能被禁止,SRAM和寄存器内容被保
留下来。在停止模式下,通过设置电源控制寄存器(PWR_CR)使内部调节器进入低功耗模式,能够降低更多的功耗。待机模式待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整
个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电。RTC可以在不需要依赖外部中断的情况下唤醒低功耗模式下的微控制器(电池供电
)。2个12位模数转换器−转换范围:0至3.6V−双采样和保持功能−温度传感器外部接口DMA:−7通道DMA控制器−支持的外设:定时器、ADC、SPI、I2C和USART80个I/O端口(100pins)−26/37/51/80个I/O口,所有I/O口可以映像到16个外部中
断;几乎所有端口均可接受5V信号外部接口调试模式−串行单线调试(SWD)和JTAG接口7个定时器−3个16位定时器−1个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器−2个看门狗定时器(
独立的和窗口型的)−系统时间定时器:24位自减型计数器(systick)外部接口9个通信接口−2个I2C接口−3个USART接口−2个SPI接口(18M位/秒)−CAN接口(2.0B主动)−USB2.0全速接口外部接口再议
GPIO口回顾:什么是GPIO?GPIO,英文全称为General-PurposeIOports,也就是通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电
路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。二、STM32F103GPIO1、PA~PE,共五组GPIO2
、Px0~Px15,每组16位,即16个管脚3、端口复用,并支持重映射IO口的基本结构Example:端口配置寄存器端口配置低寄存器(GPIOx_CRL)(x=A..E)偏移地址:00h复位值:4
4444444h用于配置每组端口中的低8位端口当I/O端口配置为输入时:输出缓冲器被禁止施密特触发输入被激活根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存
器对输入数据寄存器的读访问可得到I/O状态当I/O端口被配置为输出时:输出缓冲器被激活─开漏模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将端口置于高阻状态(P-MOS从不被激活)。─推挽
模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将激活P-MOS。弱上拉和下拉电阻被禁止出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器─在开漏模式时,对输入数据寄存器的读访问可得到I/O状态─在推挽式模式时,对输出数据寄存器的读访问得到最后一
次写的值。当I/O端口被配置为复用功能时:在开漏或推挽式配置中,输出缓冲器被打开内置外设的信号驱动输出缓冲器(复用功能输出)密特触发输入被激活弱上拉和下拉电阻被禁止在每个APB2时钟周期,出现在I/O脚
上的数据被采样到输入数据寄存器开漏模式时,读输入数据寄存器时可得到I/O口状态在推挽模式时,读输出数据寄存器时可得到最后一次写的值。跑马灯实验硬件资源分配:PC6----PC9分别连到4个
LED,定义为LED1~4需将端口配置为输出模式跑马灯实验控制过程点亮LED相应管脚输出高电平即相应管脚置1管脚如何控制?特殊寄存器(端口配置寄存器)控制GPIO端口用到的寄存器有:两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据
寄存器(GPIOx_IDR,GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个32位复位寄存器(GPIOx_BRR)一个32位锁定寄存器(GPIOx_LCKR)。端口配置寄存器端口配置
低寄存器(GPIOx_CRL)(x=A..E)偏移地址:00h复位值:44444444h用于配置每组端口中的低8位端口端口配置高寄存器(GPIOx_CRH)(x=A..E)偏移地址:04h复位值:44444444h用于配置每组端口中的高8位端口例:配置端口C的第6,7
,8,9管脚为:1、通用推挽输出2、输出速度为50MHzGPIOC->CRL=0x33000000GPIOC->CRH=0x00000033端口输入数据寄存器(GPIOx_IDR)(x=A..E)地址偏移:08h复位值:0000
0000h端口输出数据寄存器(GPIOx_ODR)(x=A..E)地址偏移:0Ch复位值:00000000h端口位设置/复位寄存器(GPIOx_BSRR)(x=A..E)地址偏移:10h复位值:0000000
0h端口位复位寄存器(GPIOx_BRR)(x=A..E)地址偏移:14h复位值:00000000h例:要求在以上配置的基础上,读出GPIOC管脚的状态,并将其状态反转temp=GPIOC->ODR;GPIOC->ODR=~temp;GPIOC->OD
R=~GPIOC->ODRif((GPIOx->ODR&GPIO_Pin)!=(u32)Bit_RESET){bitstatus=(u8)Bit_SET;}else{bitstatus=(u8)
Bit_RESET;}returnbitstatus;if(bitstatus!=RESET){GPIOx->BSRR=GPIO_Pin;}else{GPIOx->BRR=GPIO_Pin;}端口配置锁定寄存器(GPIOx_LCKR)(x=A..E)当执行正确的写序列设置了位16(
LCKK)时,该寄存器用来锁定端口位的配置。位[15:0]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。每个锁定位锁定控制寄存器(CRL,CRH)中相应的
4个位。地址偏移:18h复位值:00000000h控制过程点亮LED相应管脚输出高电平即相应管脚置1管脚如何控制?特殊寄存器(端口配置寄存器)写入相应值即可控制定位特殊寄存器存储器地址系统总线构架四个主动单元:Cortex-M3内核的ICode总线(I-bus)、DC
ode总线(D-bus)、System总线(S-bus)和通用DMA(GP-DMA)。三个被动单元:内部SRAM、内部Flash存储器、AHB到APB的桥(AHB2APBx,连接所有的APB设备)。总线I
Code总线该总线将Cortex-M3内核的指令总线与Flash指令接口相连接。指令预取在此总线上完成DCode总线该总线将Cortex-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。系统总线连接内核的系统总线(外设总线
)到总线矩阵,总线矩阵协调着内核和DMA间的访问。总线矩阵此总线矩阵由三个驱动部件(CPU的DCode、系统总线和DMA总线)和三个被动部件(闪存存储器接口、SRAM和AHB2APB桥)构成。AHB外设通过总线矩阵与系统
总线相连,允许DMA访问外设寄存器求法#definePERIPH_BASE((u32)0x40000000)寄存器地址=总线基址+外围总线基址+外设地址偏移量+寄存器偏移量#defineAPB1PERIP
H_BASEPERIPH_BASE#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)#defineAHBPERIPH_BASE(PERIPH_BASE+0x20000)#defin
eGPIOA_BASE(APB2PERIPH_BASE+0x0800)#defineGPIOB_BASE(APB2PERIPH_BASE+0x0C00)#defineGPIOC_BASE(APB2PERIPH_BASE+0x100
0)外设寄存器求法寄存器地址=总线基址+外围总线基址+外设地址偏移量+寄存器偏移量typedefstruct{vu32CRL;vu32CRH;vu32IDR;vu32ODR;vu32BSRR;vu32BRR;vu32LCKR;}GPIO_TypeDef;#def
ineGPIOC((GPIO_TypeDef*)GPIOC_BASE)GPIOC->BSRR=0x0040;GPIO_SetBits(GPIO_LED,GPIO_Pin_6);voidGPIO_SetBits(GPIO_TypeDef*GPIOx,
u16GPIO_Pin){GPIOx->BSRR=GPIO_Pin;}typedefstruct{vu32CRL;vu32CRH;vu32IDR;vu32ODR;vu32BSRR;vu32BRR;vu
32LCKR;}GPIO_TypeDef;#defineGPIO_LEDGPIOCGPIOC->BSRR=GPIO_Pin_6;#defineGPIO_Pin_6((u16)0x0040)GPIOC->BSRR=((u16)0x0040)GPIO端口复用AFIOAFIOA
lternativeFunctionIO同一管脚,不仅作为GPIO,也可作为其他特殊功能使用即同一管脚,多种应用使用默认复用功能前必须对端口位配置寄存器编程。对于复用的输入功能,端口可以配置成:─输入模式(浮空、上拉或下拉)─复用功能输出模式:输入驱动器被配置成浮空输
入模式对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。注意:1、如果把一端口配置成复用输出功能,将使引脚和输出寄存器断开,并和片上外设的
输出信号连接。2、如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。软件重新映射I/O复用功能为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到
其他一些脚上。这可以通过软件配置相应的寄存器来完成这时,复用功能就不再映射到它们的原始引脚上了。当I/O端口被配置为复用功能时:在开漏或推挽式配置中,输出缓冲器被打开内置外设的信号驱动输出缓冲器(复用功能输出)密特触发输入被激活弱上拉和
下拉电阻被禁止在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器例,采用串口1进行通信,进行必要AFIO的设置例,采用串口1进行通信,进行必要AFIO的设置GPIOA->CRH=0xB0;GPIOA->CRH=0x0400;或GPIOA->CRH=0x04B0;
复用重映射和调试I/O配置寄存器(AFIO_MAPR)地址:#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)#defineAFIO_BASE(APB2PERIPH_BASE+0x0000)typedefstruct{vu32EVCR;vu32M
APR;vu32EXTICR[4];}AFIO_TypeDef;地址偏移:04h如:可以把串口1重新映射到PB6和7口AFIO->MAPR|=0x04;GPIOB->CRL=0x0B000000;GPIOB->CRL=0x40000000;或GPIOB->CRL=0x4B
000000外部中断/唤醒线所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。外部中断配置寄存器1-4(AFIO_EXTICR1-4)分别配置各个端口的外部中断方式GPIOAFIO固
件库GPIO寄存器结构以及GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下:typedefstruct{vu32CRL;vu32CRH;vu
32IDR;vu32ODR;vu32BSRR;vu32BRR;vu32LCKR;}GPIO_TypeDef;typedefstruct{vu32EVCR;vu32MAPR;vu32EXTICR[4];
}AFIO_TypeDef;