小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

STM32F103學習筆記 (八) PWM輸出

 貝天公館 2016-09-06


脈沖寬度調(diào)制(PWM),是對脈沖寬度的控制。

STM32 的定時器除了 TIM6 和 7。其他的定時器都可以用來產(chǎn)生 PWM 輸出。其中高級定
時器 TIM1 和 TIM8 可以同時產(chǎn)生多達 7 路的 PWM 輸出。而通用定時器也能同時產(chǎn)生多達 4
路的 PWM 輸出,這樣, STM32 最多可以同時產(chǎn)生 30 路 PWM 輸出!
本實驗是利用 TIM3 的通道 2,把通道 2 重映射到 PB5, 產(chǎn)生 PWM 來控制 DS0 的亮度。
TIM3_CH2 默認是接在 PA7上面的,而我們的 DS0 接在 PB5 上面,可以通過重映射功能,把 TIM3_CH2
映射到 PB5 上。
關于重映射,有一個TIM3的重映射表:


每個通道都是映射到固定的GPIO口上。
下面是關于time.c文件:
[csharp] view plain copy
  1. //TIM3 PWM 部分初始化  
  2. //PWM 輸出初始化  
  3. //arr:自動重裝值  
  4. //psc:時鐘預分頻數(shù)  
  5. void TIM3_PWM_Init(u16 arr,u16 psc)  
  6. {  
  7. GPIO_InitTypeDef GPIO_InitStructure;  
  8. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  
  9. TIM_OCInitTypeDef TIM_OCInitStructure;  
  10. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //①使能定時器 3 時鐘  
  11. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|  
  12. RCC_APB2Periph_AFIO, ENABLE);  //①使能 GPIO 和 AFIO 復用功能時鐘  
  13. GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //②重映射 TIM3_CH2->PB5  
  14. //設置該引腳為復用輸出功能,輸出 TIM3 CH2 的 PWM 脈沖波形 GPIOB.5  
  15. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;  //TIM_CH2  
  16. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推挽輸出  
  17. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  18. GPIO_Init(GPIOB, &GPIO_InitStructure); //①初始化 GPIO  
  19. //初始化 TIM3  
  20. TIM_TimeBaseStructure.TIM_Period = arr;  //設置在自動重裝載周期值  
  21. TIM_TimeBaseStructure.TIM_Prescaler =psc;  //設置預分頻值  
  22. TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim  
  23. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM 向上計數(shù)模式  
  24. TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //③初始化 TIMx  
  25. //初始化 TIM3 Channel2 PWM 模式  
  26. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇 PWM 模式 2  
  27. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能  
  28. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性高  
  29. TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //④初始化外設 TIM3 OC2  
  30. TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能預裝載寄存器  
  31. TIM_Cmd(TIM3, ENABLE);  //⑤使能 TIM3  
  32. }  
主函數(shù):

[csharp] view plain copy
  1. int main(void)  
  2. {  
  3. u16 led0pwmval=0;  
  4. u8 dir=1;  
  5. delay_init();   //延時函數(shù)初始化   
  6. NVIC_Configuration();  //設置 NVIC 中斷分組 2:2 位搶占優(yōu)先級, 2 位響應優(yōu)先級  
  7. uart_init(9600);  //串口初始化波特率為 9600  
  8. LED_Init();  //LED 端口初始化  
  9. TIM3_PWM_Init(899,0); //不分頻,PWM 頻率=72000/900=8Khz  
  10.  while(1)  
  11. {  
  12. delay_ms(10);  
  13. if(dir)led0pwmval++;  
  14. else led0pwmval--;  
  15. if(led0pwmval>300)dir=0;  
  16. if(led0pwmval==0)dir=1;  
  17. TIM_SetCompare2(TIM3,led0pwmval);   
  18. }  
  19. }  






    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多