牛人的STM32学习笔记寄存器版本Word格式文档下载.docx
- 文档编号:13958542
- 上传时间:2022-10-15
- 格式:DOCX
- 页数:38
- 大小:48.96KB
牛人的STM32学习笔记寄存器版本Word格式文档下载.docx
《牛人的STM32学习笔记寄存器版本Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《牛人的STM32学习笔记寄存器版本Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。
IOPFEN
IOPEEN
IOPDEN
IOPCEN
IOPBEN
IOPAEN
保留
AFIOEN
RCC_APB2ENR的0~15位(06~32位保留)
第2~8分别是使能GPIOA~GPIOG时钟的,只要将其置“1”即可,如RCC_APB2ENR|=1<
<
2;
就是使能GPIOA的时钟;
其余IO口的始终使能一次类推。
(2)对相应的IO模式进行配置,低8位配置GPIOx_CRL;
高8位配置GPIOx_CRH
31
30
29
28
27
26
25
24
CNF7[1:
0]
MODE7[1:
CNF6[1:
MODE6[1:
23
22
21
20
19
18
17
16
CNF5[1:
MODE5[1:
CNF4[1:
MODE4[1:
CNF3[1:
MODE3[1:
CNF2[1:
MODE2[1:
CNF1[1:
MODE1[1:
CNF0[1:
MODE0[1:
GPIOx_CRL(x=A~G(端口配置低寄存器x=A…E)
该寄存器用于配置GPIOx的低8位,具体8种模式的配置见《中文参考手册》例如:
GPIOD->
CRL&
=0XFFFFF0FF;
GPIOD->
CRL|=0X00000300;
/PD.2推挽输出;
其余IO口的低8位以此类推。
CNF15[1:
MODE15[1:
CNF14[1:
MODE14[1:
CNF13[1:
MODE13[1:
CNF12[1:
MODE12[1:
CNF11[1:
MODE11[1:
CNF10[1:
MODE10[1:
CNF9[1:
MODE9[1:
CNF8[1:
MODE8[1:
GPIOx_CRH(端口配置高寄存器x=A…E)
该寄存器用于配置GPIOx的高8位,具体8种模式的配置见《中文参考手册》例如:
GPIOA->
CRH&
=0XFFFFFFF0;
;
CRH|=0X00000003;
//PA8推挽输出;
其余IO口的高8位以此类推。
(3)端口的输入和输出电平配置
IDR15
IDR14
IDR13
IDR12
IDR11
IDR10
IDR9
IDR8
IDR7
IDR6
IDR5
IDR4
IDR3
IDR2
IDR1
IDR0
GPIOx_IDR(端口输入数据寄存器x=A…E)
该寄存器配置IO口的0~15位的输入数据,以16位读出。
ODR15
ODR14
ODR13
ODR12
ODR11
ODR10
ODR9
ODR8
ODR7
ODR6
ODR5
ODR4
ODR3
ODR2
ODR1
ODR0
GPIOx_ODR(端口输出数据寄存器x=A…E)
该寄存器配置IO口的0~15位的输入初始状态,例如:
ODR|=1<
13;
//PA13上拉输入
一般GPIO口配置可仿以下两个程序:
voidKEY_Init(void)
{
RCC->
APB2ENR|=1<
//使能PORTA时钟
//PA0设置成输入
CRL|=0X00000008;
=0X0F0FFFFF;
//PA13,15设置成输入
CRH|=0X80800000;
13;
//PA13上拉,PA0默认下拉
15;
//PA15上拉
}
voidLED_Init(void)
//使能PORTA时钟
5;
//使能PORTD时钟
CRH|=0X00000003;
//PA8推挽输出
8;
//PA8输出高
=0XFFFFF0FF;
CRL|=0X00000300;
//PD.2推挽输出
//PD.2输出高
}
二、串口通信
STM32最多可以提供5路串口,其串口配置主要有以下步骤:
(1)串口时钟使能
RCC_APB2ENR的0~15位(16~32位保留)
在寄存器RCC_APB2ENR里的第14位就是对串口1的时钟使能即:
RCC_APB2ENR|=1<
14;
//使能串口1时钟,那么除串口1的时钟使能在RCC_APB2ENR外其余的时钟使能位在寄存器RCC_APB1ENR里,看下表:
DACEN
PWREN
BKPEN
CANEN
USBEN
I2C2EN
I2C1EN
UART5EN
UART4EN
UART3EN
UART2EN
SPI3EN
SPI2EN
WWDGEN
TIM7EN
TIM6EN
TIM5EN
TIM4EN
TIM3EN
TIM2EN
RCC_APB1ENR
例如:
RCC_APB1ENR|=1<
17;
//使能串口2时钟,其余串口时钟使能以此类推。
(2)串口复位即结束复位
STM32在使用串口时不管当前该串口出于什么状态都先要将其复位,而复位后要将其结束复位。
串口复位主要在寄存器RCC_APB1RSTR(串口1的复位)和寄存器
RCC_APB2RSTR(其余串口复位)这两个寄存器如下表
ADC3RST
USART1RST
TIM8RST
SPI1RST
TIM1RST
ADC2RST
ADC1RST
IOPGRST
IOPFRST
IOPERST
IOPDRST
IOPCRST
IOPBRST
IOPARST
AFIORST
RCC_APB2RSTR(APB2外设复位寄存器)
寄存器RCC_APB2RSTR的第14位是进行串口1的复位如:
RCC_APB1RSTR|=1<
//将串口1复位,然后结束复位RCC_APB1RSTR|=~(1<
14);
//结束串口1复位
其余串口复位在寄存器RCC_APB1RSTR里如下表:
DACRST
PWRRST
BKPRST
CANRST
USBRST
I2C2RST
I2C1RST
UART5RST
UART4RST
UART3RST
UART2RST
SPI3RST
SPI2RST
WWDGRST
TIM7RST
TIM6RST
TIM5RST
TIM4RST
TIM3RST
TIM2TST
RCC_APB1RSTR(APB1外设复位寄存器)
如:
RCC_APB1RSTR|=1<
//复位串口2RCC_APB1RSTR|=~(1<
17);
//结束串口2复位,其余串口复位操作以此类推。
(3)串口波特率设置
DIV_Mantissa[11:
4]
DIV_Mantissa[3:
DIV_Fraction[3:
USART_BRR(波特比率寄存器)
该寄存器的15-4位:
0]USARTDIV的整数部分,这12位定义了USART分频器除法因子(USARTDIV)的整数部分;
3-0位:
0]USARTDIV的小数部分,这4位定义了USART分频器除法因子(USARTDIV)的小数部分。
关于波特率设置在函数
voiduart_init(u32pclk2,u32bound)里已经设置好,并且封装在usart.c文件里面可以直接调用。
(4)串口控制
STM32的每个串口都有3个控制寄存器(USART_CR1~3)控制,例如USART_CR1如下:
UE
M
WAKE
PCE
PS
PEIE
TXEIE
TCIE
RXNEIE
IDLEIE
TE
RE
RWU
SBK
USA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 学习 笔记 寄存器 版本