STM32
运用总结
主要分为
IO
口,定时器的
PWM
和
QEI
,中断,
ADC
,
DAC
和
DMA
介绍。在
STM32
的
运用中第一步一般是使能相应模块的时钟,然后配置
IO
口,最后配置相应的寄存器。
1.
IO
口
STM32
的
IO
口非常多,而且与其它外设模块通常是复用的。在不同的外设中
IO
口的
设置是不一样的。这一部分介绍普通的数值
IO
口。
IO
口有
A
-
G
共
7
组,每组
16
口。
1.
IO
口在时钟总线AHB1上,使能对应端口的时钟。在寄存器
RCC
-
>AHB1ENR
中。
2.
配置
IO
口的模式,普通的
IO
口配置为
普通的输入输出模式
。配置IO口是悬空
还是上拉或者下拉。以上两步分别在寄存器
GPIOx
-
>MODER
和
GPIOx
-
>
PUPDR
(
x=A,B,C,D,E,F,G
)
3.
其中配置为输出模式时还要设置速度和相应的输出方式,
开漏或者推挽,
以上两步
分别在寄存器
GPIOx
-
> OSPEEDR
和
GPIOx
-
>OTYPER
(
x=A,B,C,D,E,F,G
)
。
4.
设置
IO
口的高低电平。在寄存器
GPIOx
-
>BSRRH
中置相应的位为
1
就是将相应
的位置
0
,在寄存器
GPIOx
-
>BSRRL
中置相应的位为
1
就是将相应的位置
1.
另外
还可以设置
GPIOx_ODR
寄存器来设置输出电平以及读取
GPIOx_IDR
寄存器来获
取输入电平。
2.
PWM
STM32
的定时器也非常之多,用到的主要是两个部分:用定时器产生
PWM
和定时触
发
ADC
,这里一部分介绍
PWM
。
(高级定时器的配置和这差不多,由于在
STM32F103
里面已经尝试过在
STM32F407
里面就没有再写)
1.
配置
IO
口。我们说过
STM32
的外设模块主要是和
IO
口复用的,因此在使用外设
模块时首先配置好相应的
IO
口。
比如使用
A
口的
PA1
作为定时器
Timer2
的
PWM
输出。则应按照如下的步骤来配置
PA1
。
1)
使能
A
口的时钟。在寄存器
RCC
-
>AHB1ENR
中。
2)
配置
PA1
为复用功能
。在寄存器
GPIOA
-
>MODER
中。
3)
配置
PA1
的上拉下拉或者悬空。在寄存器
GPIOA
-
>PUPDR
中。
4)
配置
PA1
的速度。在
GPIOA
-
>OSPEEDR
中。
5)
配置
PA1
的复用功能是和
Timer2
对应的
。在
GPIOA
-
>AFR[0]
中。
(相对应的
复用对应表数据手册上有)
。
2.
配置定时器模块
1)
使能相应的定时器模块时钟
(注意不同的定时器在不同的时钟总线上)
。
Timer2
在
APB1
总线上。所以在
RCC
-
>APB1ENR
中使能
Timer2.
2)
设置定时器的预分频系数,周期值。在寄存器
TIMx
-
>PSC
和
TIMx
-
>ARR
中