久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1866|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stm32 PWM 用定時(shí)器寫(xiě)的

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:364826 發(fā)表于 2018-7-30 19:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
stm32單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "sys.h"


  4. void Delay(u32 count)
  5. {
  6.    u32 i=0;
  7.    for(;i<count;i++);
  8. }
  9. void NVIC_Configuration(void)
  10. {

  11.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)

  12. }

  13. /****************************************************************
  14. * 函數(shù)名:void GPIO_Config(void)
  15. * 描述  :配置復(fù)用輸出PWM時(shí)用到的I/O
  16. * 輸入  :無(wú)
  17. * 輸出  :無(wú)
  18. * 調(diào)用  :main()調(diào)用
  19.    PA6       PA7    兩路  PWM
  20. ***************************************************************/
  21. void GPIO_Config(void)  
  22. {
  23.   GPIO_InitTypeDef GPIO_InitStructure;

  24.   /* GPIOA and GPIOB clock enable */
  25.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);  //

  26.   /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */
  27.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;
  28.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;           // 復(fù)用推挽輸出
  29.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  30.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  31. }

  32. /****************************************************************
  33. * 函數(shù)名:void TIM3_Config(void)  
  34. * 描述  :配置TIM3輸出的PWM信號(hào)的模式
  35. *      CH1:輸出 T=2.5ms(f=1/2.5ms=400Hz) 占空比D=0.6的PWM波(高電平在前,低電平在后)
  36. *      CH2:輸出 T=2.5ms(f=1/2.5ms=400Hz)       D=0.4的PWM波(高電平在后,低電平在前)
  37. *      步驟一:通過(guò)T和TIMxCLK的時(shí)鐘源確定TIM_Period和TIM_Prescaler  (計(jì)數(shù)值和預(yù)分頻)
  38. *          T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=2.5ms  
  39. *          因?yàn)?TIM_Period<65535,所以 TIM_Prescaler>1,即 TIM_Prescaler=2     //(預(yù)分頻 參數(shù))
  40. *          所以 TIM_Period=59999=0xEA5F        //計(jì)數(shù)值
  41. *      步驟二:根據(jù)TIM_Period的值,高低電平的先后D,確定CCR和TIM_OCPolarity
  42. *          CH1:因?yàn)镈=0.6,先高后低;
  43. *              所以CCR1=(TIM_Period+1)* D=36000;TIM_OCPolarity=TIM_OCPolarity_High
  44. *          CH2:因?yàn)镈=0.4,先高后低;
  45. *              所以CCR1=(TIM_Period+1)* (1-D)=36000;TIM_OCPolarity=TIM_OCPolarity_Low
  46. *      步驟三:基礎(chǔ)寄存器初始化
  47. *      步驟四:通道寄存器初始化
  48. *      步驟五:使能TIM3重載寄存器ARR
  49. *      步驟六:使能TIM3  
  50. * 輸入  :無(wú)  
  51. * 輸出  :無(wú)  
  52. * 調(diào)用  :main()調(diào)用  
  53. ***************************************************************/  
  54. void TIM3_Config(u16 arr,u16 CCR1,u16 CCR2)  
  55. {  




  56.   
  57.           TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;  
  58.     TIM_OCInitTypeDef          TIM_OCInitStructure;        
  59.        
  60.           /*PCLK1經(jīng)過(guò)2倍頻后作為T(mén)IM3的時(shí)鐘源等于72MHz*/  
  61.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);       
  62.                
  63.     /* Time base configuration 47999*/                                            
  64.           TIM_TimeBaseStructure.TIM_Period =arr;       //  計(jì)數(shù)值  47999
  65.     TIM_TimeBaseStructure.TIM_Prescaler = 720;            //設(shè)置預(yù)分頻:預(yù)分頻=2,即為72/3=24MHz  預(yù)分頻(時(shí)鐘分頻)72M/(2+1)=24M
  66.        
  67.    
  68.     TIM_TimeBaseStructure.TIM_ClockDivision = 0;                                //設(shè)置時(shí)鐘分頻系數(shù):不分頻  
  69.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                 //向上計(jì)數(shù)溢出模式  
  70.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  
  71.     /* PWM1 Mode configuration: Channel1 */  
  72.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                           //配置為PWM模式1  
  73.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  
  74.                
  75.     TIM_OCInitStructure.TIM_Pulse = CCR1;                                       //設(shè)置跳變值,當(dāng)計(jì)數(shù)器計(jì)數(shù)到這個(gè)值時(shí),電平發(fā)生跳變  
  76.     TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High;                    //當(dāng)定時(shí)器計(jì)數(shù)值小于CCR1時(shí)為高電平  

  77.                 TIM_OC1Init(TIM3, &TIM_OCInitStructure);                                    //使能通道1      
  78.     TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

  79.                
  80.     /* PWM1 Mode configuration: Channel2 */  
  81.                 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  82.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  
  83.     TIM_OCInitStructure.TIM_Pulse = CCR2;                                       //設(shè)置通道2的電平跳變值,輸出另外一個(gè)占空比的PWM  
  84.      //TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                    //當(dāng)定時(shí)器計(jì)數(shù)值小于CCR2時(shí)為低電平
  85.      TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                    //當(dāng)定時(shí)器計(jì)數(shù)值小于CCr2 時(shí)為高電平
  86.                 TIM_OC2Init(TIM3, &TIM_OCInitStructure);                                    //使能通道2  
  87.     TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
  88.                
  89.     TIM_ARRPreloadConfig(TIM3, ENABLE);                                         //使能TIM3重載寄存器ARR  
  90.     /* TIM3 enable counter */  
  91.     TIM_Cmd(TIM3, ENABLE);                                                      //使能TIM3   
  92.         }       
  93. /***************************************************************
  94. * 函數(shù)名:main
  95. * 描述  :主函數(shù)
  96. * 輸入  :無(wú)
  97. * 輸出  :無(wú)
  98. ***************************************************************/
  99. int main(void)
  100. {
  101.                
  102.           u16 CCR1=80;
  103.           u16 CCR2=80;
  104.           delay_init();                  //延時(shí)初始化
  105.     SystemInit();   /* 配置系統(tǒng)時(shí)鐘為72M */
  106.           NVIC_Configuration();
  107.     GPIO_Config();
  108.     TIM3_Config(1999,CCR1,CCR2);
  109.           delay_ms(1500);
  110.           delay_ms(1500);
  111.           
  112.        
  113.                

  114.        
  115.                

  116.          // TIM3_Init();
  117.     while (1)
  118.     {
  119.                        
  120.                         TIM3->CCR2=140;
  121.                         TIM3->CCR2=140;
  122.             
  123.                        
  124.     }
  125. }

復(fù)制代碼

所有資料51hei提供下載:
PWM.rar (285.54 KB, 下載次數(shù): 21)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美一区在线 | 国产精品日本一区二区不卡视频 | 91中文字幕在线 | 夜久久 | 国产日韩欧美一区二区 | 日韩中文字幕视频 | 国产精品一区二区三区四区 | 99re66在线观看精品热 | 欧美精品一区二区三区蜜桃视频 | 国产男女精品 | 免费成人午夜 | 欧美综合一区二区 | 国产69精品久久99不卡免费版 | 91污在线 | 三级视频网站 | a级毛片国产 | 祝你幸福电影在线观看 | 91久久久久久久 | 奇米超碰 | 97成人免费 | 亚洲黄色av网站 | 伊色综合久久之综合久久 | 亚洲成人毛片 | 中文字幕高清 | 一区二区三区视频在线免费观看 | 激情av网站 | 日韩不卡视频在线 | 欧美一级在线观看 | 成人午夜在线 | 亚洲精品欧美一区二区三区 | 91夜夜夜 | 久久综合狠狠综合久久综合88 | 91精品中文字幕一区二区三区 | 国产精品久久久久久久久久久久久 | 91精品国产91久久久久久不卞 | 日韩欧美手机在线 | 成人毛片在线视频 | 午夜日韩 | 激情福利视频 | 每日更新av | 婷婷亚洲综合 |