stm32 timer1/pwm 笔记!

12-30

//--------------------------------TIMER1

先说下RCC时钟

//-------------------------RCC(具体参考所用芯片)

AHB所连接的时钟

*     RCC_AHBPeriph_DMA1,RCC_AHBPeriph_DMA2,RCC_AHBPeriph_SRAM

*     RCC_AHBPeriph_FLITF,RCC_AHBPeriph_CRC,RCC_AHBPeriph_FSMC

*     RCC_AHBPeriph_SDIO

APB1所连接的时钟

*  RCC_APB1Periph_TIM2, RCC_APB1Periph_TIM3, RCC_APB1Periph_TIM4,

*    RCC_APB1Periph_TIM5, RCC_APB1Periph_TIM6, RCC_APB1Periph_TIM7,

*    RCC_APB1Periph_WWDG, RCC_APB1Periph_SPI2, RCC_APB1Periph_SPI3,

*    RCC_APB1Periph_USART2, RCC_APB1Periph_USART3, RCC_APB1Periph_USART4, 

*    RCC_APB1Periph_USART5, RCC_APB1Periph_I2C1, RCC_APB1Periph_I2C2,

*    RCC_APB1Periph_USB, RCC_APB1Periph_CAN1, RCC_APB1Periph_BKP,

*    RCC_APB1Periph_PWR, RCC_APB1Periph_DAC

APB2所连接的时钟

*    RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB,

*    RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE,

*    RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1,

*    RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1,

*    RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3

TIMER1的时钟在APB2,要先使能下

pm:

在配置TIM1的时候,TIM_TimeBaseInitTypeDef该结构体本身TIM_ReperitionCounter

定义为u8的,但却给出了一个初始该结构体的函数中,又赋予u16,但是在书写

TIM_ReperitionCounter0x0000(0x00)的时候,提示

src/USER/hardware.c(105): error:  #136: struct "" has no field "TIM_ReperitionCounter"

最后放弃定义了,好像没什么影响

一直卡住的,原因是中断标志位要软件清零,硬件置位。

这个是我最hate的一点,还以为会自动清零的,有点受AVR的影响,呵呵

计数器的时钟频率(CK_CNT)等于fCK_PSC/( PSC[15:0]+1)

fck_PSC=TIM1_CLK=72M

CK_CNT=72M/(71+1)=1M,设定重装载数(u16)10000,为定时1s发一串字符,需要中断100次。

12-31

TIM1_PWM

使用TIM1输出pwm

从芯片的引脚图可以看出,PA8PA9TIM1_CH1TIM1_CH2,也可以使用芯片GPIO重映射功能,进而使用TIM4

配置TIM1初始化,OC1初始化,产生占空比50%PWM

你可能感兴趣的:(stm32 timer1/pwm 笔记!)