![](https://csdnimg.cn/release/download_crawler_static/86393384/bg1.jpg)
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 中