STM32F407ZGT的时钟深入剖析(32M_40M_72M灵活切换)
- 格式:pdf
- 大小:786.72 KB
- 文档页数:15
stm32f407定时器时钟频率的问题
从时钟树中我们可以得知(时钟树的图片可以直接参考6楼,感谢6楼xkwy补上的图):
(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线
(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线
从STM32F4的内部时钟树可知,当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟;而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍。
因为系统初始化SystemInit函数里初始化APB1总线时钟为4分频即42M,APB2总线时钟为2分频即84M,所以TIM1、TIM8~TIM11的时钟为APB2时钟的两倍即168M,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍即84M。
知道定时器的时钟源频率我们用定时器做延时就很方便了,只要设定合适的分频系数即可,附一下用中断实现延时的公式:(摘自原子的STM32F4开发指南)
Tout = ((arr+1)*(psc+1))/T clk;
公式中psc就是分频系数,arr就是计数值,达到这个计数就会发生溢出中断,T clk就是我上述分析的时钟源频率的倒数。
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.PWMSTM32的定时器也非常之多,用到的主要是两个部分:用定时器产生PWM和定时触发ADC,这里一部分介绍PWM。
(高级定时器的配置和这差不多,由于在STM32F103里面已经尝试过在STM32F407里面就没有再写)1.配置IO口。
我们说过STM32的外设模块主要是和IO口复用的,因此在使用外设模块时首先配置好相应的IO口。
比如使用A口的PA1作为定时器Timer2的PWM输出。
则应按照如下的步骤来配置PA1。
1)使能A口的时钟。
在寄存器RCC->AHB1ENR中。
2)配置PA1为复用功能。
6.4 独立按键 (2)6.1.1 按键的分类 (2)6.1.2 按键属性 (2)6.1.3 STM32的位带操作 (3)6.1.4 例程01 STM32芯片按键点灯(无防抖) (7)6.1.5 例程02 STM32芯片按键点灯-增加了防抖的代码 (12)6.4 独立按键6.1.1按键的分类目前,按键有多种形式。
有机械接触式,电容式,轻触式等。
1.按制作工艺分:硬板按键:带弹簧的按键焊接在印刷电路板上软板键盘:以导电橡胶作为接触材料放在以聚脂薄膜作为基底的印刷电路上所形成的按键。
2.按工艺原理分:可以将键盘分为编码键盘和非编码键盘,编码键盘的键盘电路内包含有硬件编码器,当按下某—个键后,键盘电路能直接提供与该键相对应的编码信息,例如ASCII码。
非编码键盘的键盘电路中只有较简单的硬件,采用软件来识别按下键的位置,并提供与按下键相对应的中间代码送主机,然后由软件将中间代码转换成相应的字符编码,例如ASCII码;非编码键盘主要靠软件编程来识别的,在单片机组成的各种系统中,用的较多的是非编码键盘。
非编码键盘又分为独立键盘和行列式(又称矩阵式)键盘。
6.1.2按键属性键盘实际上就是一组按键,在单片机外围电路中,通常用到的按键都是机械弹性开关,当开关闭合时,线路导通,开关断开时,线路断开,下图是几种单片机系统常见的按键:弹性小按键被按下时闭合,松手后自动断开;自锁式按键按下时闭合且会自动锁住,只有再次按下时才弹起断开。
单片机的外围输入控制用小弹性按键较好,单片机检测按键的原理是:单片机的I/O口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋一高电平,然后让单片机不断地检测该I/O口是否变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变为低电平则说明按键被按下,然后执行相应的指令。
stm32系统时钟配置问题系统从上电复位到72mz 配置好之前,提供时钟的是内如高速rc 振荡器提供8MZ 的频率,这个由下面void SystemInit (void)函数的前面的一部分代码来完成的和保证的:RCC->CR |= (uint32_t)0x00000001;#ifndef STM32F10X_CLRCC->CFGR &= (uint32_t)0xF8FF0000;#elseRCC- >CFGR &= (uint32_t)0xF0FF0000;#endif RCC->CR &= (uint32_t)0xFEF6FFFF; RCC->CR &= (uint32_t)0xFFFBFFFF;RCC->CFGR &= (uint32_t)0xFF80FFFF;#ifdef STM32F10X_CLRCC->CR &= (uint32_t)0xEBFFFFFF;RCC->CIR = 0x00FF0000;RCC->CFGR2 = 0x00000000;#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)RCC->CIR =0x009F0000;RCC->CFGR2 = 0x00000000;#elseRCC->CIR = 0x009F0000;#endif#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)#ifdefDATA_IN_ExtSRAMSystemInit_ExtMemCtl();#endif#endif接着void SystemInit (void)调用SetSysClock();函数,将系统时钟配置到72m,将AHB,APB1,APB2 等外设之前的时钟都配置好,然后切换到72mz 下运行。
正点原子stm32f407rtc时钟外部电路概述说明1. 引言1.1 概述本文将介绍正点原子stm32f407rtc时钟外部电路的概述,并详细说明其设计要点以及与外部设备的接口和协议技术要点。
该外部电路旨在提供稳定、精确的时钟信号给STM32F407RTC芯片,以确保系统时间的准确性。
1.2 文章结构本文共分为五个部分,每个部分都涵盖了具体的内容。
- 第一部分是引言,主要介绍文章目录和概述。
- 第二部分是正点原子STM32F407RTC时钟外部电路概述说明,包括简要介绍STM32F407RTC芯片以及RTC外部电路设计要点和外部晶振选型及连接方法。
- 第三部分是原子STM32F407RTC外部时钟模块设计考虑因素,涵盖了电源与地线设计、防干扰措施和滤波器设计,以及时钟频率精度和稳定性考虑。
- 第四部分是STM32F407RTC与外部设备的接口与协议技术要点,详细介绍了I2C接口通信配置技巧、SPI接口通信配置技巧以及UART接口通信配置技巧。
- 最后一部分是结论,对整篇文章进行总结和回顾。
1.3 目的本文旨在帮助读者更好地理解正点原子STM32F407RTC时钟外部电路的设计原理和要点。
通过阐述电路设计考虑因素以及接口和协议技术要点,读者可以了解如何有效地搭建一个稳定、可靠的时钟外部电路,并且能够与其他设备进行良好的通信。
此外,我们也将探讨一些优化技巧和经验教训,以帮助读者在实际应用中避免常见问题和错误。
最终,希望读者能够在正点原子STM32F407RTC开发中有所启发并取得成功。
2. 正点原子stm32f407rtc时钟外部电路概述说明2.1 STM32F407RTC简介正点原子stm32f407rtc是一款基于STM32F407芯片的实时时钟模块,具有高度精确的计时功能。
它可以用于各种需要准确时间计量的应用场景,如智能家居系统、工业自动化控制等。
2.2 RTC外部电路设计要点在设计正点原子stm32f407rtc时钟外部电路时,需要考虑以下要点:首先,在供电方面,应保证稳定可靠的供电源并避免电压波动对时钟模块造成影响。
《探究STM32F407的标准库时间基准》1. 引言在嵌入式系统开发中,时间基准是非常重要的,尤其是对于STM32F407这样的微控制器。
本文将深入探讨STM32F407标准库的时间基准,并分析其在嵌入式系统中的应用和优势。
2. STM32F407的时间基准STM32F407微控制器是STMicroelectronics推出的一款高性能、低功耗的ARM Cortex-M4内核微控制器。
它内置了丰富的外设和功能模块,其中包括多种定时器和计数器,这些外设提供了丰富的时间基准功能。
2.1 定时器STM32F407内置了多个通用定时器(TIM),这些定时器可以提供精确的定时和计数功能。
通过配置TIM的各种参数,可以实现不同精度和周期的时间基准。
2.2 SysTick定时器除了通用定时器外,STM32F407还内置了SysTick定时器。
SysTick 定时器是一个24位向下计数器,可以提供多种时钟频率的选择和中断功能。
它适用于系统级的时间基准。
3. STM32F407标准库的时间基准应用在嵌入式系统开发中,时间基准通常用于任务调度、周期性操作、时序控制等方面。
STM32F407标准库提供了丰富的时间基准功能,可以应用于各种实际场景。
3.1 任务调度通过配置定时器的定时周期和中断触发,可以实现多任务的精确调度。
在实时操作系统(RTOS)中,时间基准是任务调度的重要依据,STM32F407标准库的时间基准为任务调度提供了可靠的支持。
3.2 时序控制许多嵌入式系统需要精确的时序控制,例如通信协议处理、传感器采样等。
通过STM32F407的定时器和计数器,可以实现精确的时序控制,保证系统的稳定性和可靠性。
4. 个人观点和总结对于嵌入式系统开发者来说,熟练掌握STM32F407标准库的时间基准是非常重要的。
时间基准不仅可以提高系统的性能和稳定性,还可以为开发者提供便利和灵活性。
我建议在实际项目中充分利用STM32F407的时间基准功能,以实现更加可靠和高效的嵌入式系统。
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.PWMSTM32的定时器也非常之多,用到的主要是两个部分:用定时器产生PWM和定时触发ADC,这里一部分介绍PWM。
(高级定时器的配置和这差不多,由于在STM32F103里面已经尝试过在STM32F407里面就没有再写)1.配置IO口。
我们说过STM32的外设模块主要是和IO口复用的,因此在使用外设模块时首先配置好相应的IO口。
比如使用A口的PA1作为定时器Timer2的PWM输出。
则应按照如下的步骤来配置PA1。
1)使能A口的时钟。
在寄存器RCC->AHB1ENR中。
2)配置PA1为复用功能。
stm32系统时钟配置问题,解释为什么⽤某个外设之前只需要使能相应外设时钟系统从上电复位到72mz配置好之前,提供时钟的是内如⾼速rc振荡器提供8MZ的频率,这个由下⾯void SystemInit (void)函数的前⾯的⼀部分代码来完成的和保证的:RCC->CR |= (uint32_t)0x00000001;#ifndef STM32F10X_CLRCC->CFGR &= (uint32_t)0xF8FF0000;#elseRCC->CFGR &= (uint32_t)0xF0FF0000;#endifRCC->CR &= (uint32_t)0xFEF6FFFF;RCC->CR &= (uint32_t)0xFFFBFFFF;RCC->CFGR &= (uint32_t)0xFF80FFFF;#ifdef STM32F10X_CLRCC->CR &= (uint32_t)0xEBFFFFFF;RCC->CIR = 0x00FF0000;RCC->CFGR2 = 0x00000000;#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)RCC->CIR = 0x009F0000;RCC->CFGR2 = 0x00000000;#elseRCC->CIR = 0x009F0000;#endif#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)#ifdef DATA_IN_ExtSRAMSystemInit_ExtMemCtl();#endif#endif接着void SystemInit (void)调⽤ SetSysClock();函数,将系统时钟配置到72m,将AHB,APB1,APB2等外设之前的时钟都配置好,然后切换到72mz下运⾏。
STM32的各种时钟系统的应用解析时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32。
重要的时钟:PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚;1、HSI:高速内部时钟信号STM32单片机内带的时钟(8M频率)精度较差2、HSE:高速外部时钟信号精度高来源(1)HSE外部晶体/陶瓷谐振器(晶振)(2)HSE用户外部时钟3、LSE:低速外部晶体32.768kHz 主要提供一个精确的时钟源一般作为RTC时钟使用在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。
①、HSI是高速内部时钟,RC振荡器,频率为8MHz。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI是低速内部时钟,RC振荡器,频率为40kHz。
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。
倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
其中40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。
另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。
RTC的时钟源通过RTCSEL[1:0]来选择。
STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。
该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是,当需要使用USB模块时,PLL必须使能,并且时钟频率配置为48MHz或72MHz。
另外,STM32还可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。
STM32f407系统定时器时钟配置计算首先,我们需要配置系统定时器的时钟源。
STM32F407的系统定时器可以使用内部时钟源(HCLK/8)或外部时钟源。
通过软件配置,我们可以选择其中一种时钟源。
1.配置内部时钟源:要使用内部时钟源,可以通过RCC寄存器来配置。
具体需要做以下几步:a. 使能系统定时器时钟:在 RCC_APBxENR 寄存器中设置位SysTickEN=1,其中 x 为适当的 APBx 总线索引。
b.配置系统定时器时钟源:在STK_CTRL寄存器中设置位CLKSOURCE=12.配置外部时钟源:如果要使用外部时钟源作为系统定时器的时钟源,我们需要将外部时钟源与系统的时钟树相连。
具体的配置方法因时钟源的不同而不同,可参考具体芯片的参考手册。
配置了系统定时器的时钟源后,我们可以计算定时器中断的时间间隔。
系统定时器中断的时间间隔=(计数器周期)*(重载值+1)/(时钟频率)其中,计数器周期为24位,取值范围为0~2^24-1、时钟频率为系统定时器的时钟源频率。
重载值是计数器的初始值,当计数器减到0时,会触发定时中断。
举个例子,假设系统定时器的时钟源频率为8MHz,我们希望计算系统定时器中断每100ms触发一次的重载值。
中断触发周期 = 100ms = 0.1s时钟频率=8MHz=8*10^6Hz由于重载值需要为整数,我们可以将计算结果四舍五入为最接近的整数,即重载值为477以上就是STM32F407系统定时器时钟配置和计算方法的简要介绍。
配置完系统定时器的时钟源,并计算出需要的重载值后,我们可以通过编程设置相关寄存器,来开始使用系统定时器进行定时中断的任务。
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.PWMSTM32的定时器也非常之多,用到的主要是两个部分:用定时器产生PWM和定时触发ADC,这里一部分介绍PWM。
(高级定时器的配置和这差不多,由于在STM32F103里面已经尝试过在STM32F407里面就没有再写)1.配置IO口。
我们说过STM32的外设模块主要是和IO口复用的,因此在使用外设模块时首先配置好相应的IO口。
比如使用A口的PA1作为定时器Timer2的PWM输出。
则应按照如下的步骤来配置PA1。
1)使能A口的时钟。
在寄存器RCC->AHB1ENR中。
2)配置PA1为复用功能。
STM32时钟配置方法详解STM32是意法半导体(STMicroelectronics)公司推出的一系列32位Flash微控制器,被广泛应用于各种嵌入式系统中。
时钟是STM32微控制器的核心部分,正确配置时钟可以确保系统正常工作并达到预期的性能。
本文将详细介绍STM32时钟配置的方法。
1.时钟源:STM32微控制器提供了多个时钟源,包括内部时钟(HSI、LSI)和外部时钟(HSE、LSE)。
其中,HSI(高速内部时钟)是一个高频率(通常为8MHz)的内部RC振荡器,适用于低功耗应用;LSI(低速内部时钟)是一个低频率(通常为40kHz)的内部RC振荡器,用于RTC(实时时钟)模块;HSE(高速外部时钟)是一个外接的高频晶振,用于提供更精确的时钟信号;LSE(低速外部时钟)是一个外接的低频晶振,适用于RTC模块。
2.主频和系统时钟:主频是指CPU的时钟频率,系统时钟是指STM32微控制器的总线时钟,包括AHB(高性能总线)、APB1(低速外设总线)和APB2(高速外设总线)。
在进行STM32时钟配置之前,需要按照以下几个步骤来完成。
1.启用对应的时钟源:根据具体需求,选择合适的时钟源并启用相应的时钟。
可以通过设置RCC_CR寄存器和RCC_APB1ENR/RCC_APB2ENR寄存器来实现。
例如,要使用HSE作为时钟源,需要首先启用HSE时钟。
2.配置时钟分频器:为了使系统时钟不超过芯片规格要求的最大频率,需要对时钟进行分频。
分频器有两个,即AHB分频器和APB分频器。
可以通过设置RCC_CFGR寄存器来实现。
例如,将AHB分频器设置为8,将APB1和APB2分频器分别设置为4,可以将主频分别分频为8MHz、32MHz和64MHz。
3.等待时钟稳定:当启用外部时钟源时,需要等待时钟稳定。
可以通过读取RCC_CR寄存器的特定标志位来判断时钟是否稳定。
4. 配置Flash存储器的延时:根据主频的不同,需要设置Flash存储器的访问延时,以确保正常读写数据。
stm32f407之通用定时器
通用定时器
通用定时器(TIM2 to TIM5)包括由可编程的分频器驱动一个的16位或32位自动重载计数器。
它们可用于多种用途,包括测量输入信号的脉冲长度(输入捕获)或生成的输出波形(输出比较和PWM)。
可以使用定时器的预分频器和RCC时钟控制器分频器调制从几微秒到几毫秒的脉冲长度和波形周期。
它们是完全独立的,不共享任何资源。
主要特点:
通用TIMx定时器功能包括:
1. 16位(TIM3和TIM4)或32位(TIM2和TIM5)计数器,向上,向下,向上/向下自动重装计数。
2. 16位可编程预分频器(可在运行时改变)用于在1到65535之间细分计数器的时钟频率。
3. 多达4个独立的通道可用于:
- 输入捕捉
- 输出比较
- PWM生成(边缘和中心对齐模式)
- 单脉冲输出模式
4. 使用外部信号控制定时器和定时器互连的同步电路
5. 对以下事件中断/ DMA的生成:
- 更新:计数器溢出/下溢,计数器初始化(通过软件或内部/外部触发)
- 触发事件(计数器开始,停止,初始化或内部/外部触发计数)
- 输入捕捉
- 输出比较
6. 支持针对定位增量(正交)编码器和霍尔传感器电路
7. 触发输入作为外部时钟或者按周期的电流管理。
(完整版)STM32F407运⽤总结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.PWMSTM32的定时器也⾮常之多,⽤到的主要是两个部分:⽤定时器产⽣PWM和定时触发ADC,这⾥⼀部分介绍PWM。
(⾼级定时器的配置和这差不多,由于在STM32F103⾥⾯已经尝试过在STM32F407⾥⾯就没有再写)1.配置IO⼝。
我们说过STM32的外设模块主要是和IO⼝复⽤的,因此在使⽤外设模块时⾸先配置好相应的IO⼝。
⽐如使⽤A⼝的PA1作为定时器Timer2的PWM输出。
则应按照如下的步骤来配置PA1。
1)使能A⼝的时钟。
在寄存器RCC->AHB1ENR中。