您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何解決STM32普通定時器配置PWM的問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決STM32普通定時器配置PWM的問題”這篇文章吧。
oid TIM3_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; /* PWM信號電平跳變值 */ // u16 CCR1= 36000; // u16 CCR2= 36000; /*PCLK1經過2倍頻后作為TIM3的時鐘源等于72MHz*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period =1599; //計數周期1600 TIM_TimeBaseStructure.TIM_Prescaler = 1; //設置預分頻:預分頻=2,即為72/3=24MHz TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分頻系數:不分頻 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數溢出模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //配置為PWM模式1 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse =600; //設置跳變值,當計數器計數到這個值時,電平發生跳變 TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_Low; //當定時器計數值小于CCR1時為高電平 TIM_OC1Init(TIM3, &TIM_OCInitStructure); //使能通道1 TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); /* PWM1 Mode configuration: Channel2 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 300; //設置通道2的電平跳變值,輸出另外一個占空比的PWM TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //當定時器計數值小于CCR2時為低電平 TIM_OC2Init(TIM3, &TIM_OCInitStructure); //使能通道2 TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIM3重載寄存器ARR /* TIM3 enable counter */ TIM_Cmd(TIM3, ENABLE); Delay_8ms(); TIM_Cmd(TIM3, DISABLE); }
以上是“如何解決STM32普通定時器配置PWM的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。