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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1453|回復: 0
打印 上一主題 下一主題
收起左側

stm32智能小車源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:209704 發表于 2018-6-17 14:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32智能小車
  1. #include "pwm_output.h"


  2. /*
  3. * 函數名:TIM3_GPIO_Config
  4. * 描述  :配置TIM3復用輸出PWM時用到的I/O
  5. * 輸入  :無
  6. * 輸出  :無
  7. * 調用  :內部調用
  8. */
  9. static void TIM3_GPIO_Config(void)
  10. {
  11.   GPIO_InitTypeDef GPIO_InitStructure;

  12.         /* TIM3 clock enable */
  13.         //PCLK1經過2倍頻后作為TIM3的時鐘源等于72MHz
  14.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1|RCC_APB2Periph_GPIOA, ENABLE);
  15.         
  16.   /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */
  17.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 ;
  18.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    // 復用推挽輸出
  19.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  20.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  21. }

  22. /*
  23. * 函數名:TIM3_Mode_Config
  24. * 描述  :配置TIM3輸出的PWM信號的模式,如周期、極性、占空比
  25. * 輸入  :無
  26. * 輸出  :無
  27. * 調用  :內部調用
  28. */
  29. static void TIM3_Mode_Config(void)
  30. {
  31.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  32.         TIM_OCInitTypeDef  TIM_OCInitStructure;

  33.         /* PWM信號電平跳變值 */
  34.         u16 CCR1_Val = 1001;        
  35.         u16 CCR2_Val = 1001;
  36.         u16 CCR3_Val = 1001;
  37.         u16 CCR4_Val = 1001;

  38. /* -----------------------------------------------------------------------
  39.     TIM3 Configuration: generate 4 PWM signals with 4 different duty cycles:
  40.     TIM3CLK = 72 MHz, Prescaler = 0x0, TIM3 counter clock = 72 MHz
  41.     TIM3 ARR Register = 999 => TIM3 Frequency = TIM3 counter clock/(ARR + 1)
  42.     TIM3 Frequency = 72 KHz.
  43.     TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%
  44.     TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%
  45.     TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%
  46.     TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%
  47.   ----------------------------------------------------------------------- */

  48.   /* Time base configuration */                 
  49.   TIM_TimeBaseStructure.TIM_Period = 19999;       //當定時器從0計數到999,即為1000次,為一個定時周期
  50.   TIM_TimeBaseStructure.TIM_Prescaler = 71;            //設置預分頻:不預分頻,即為72MHz
  51.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        //設置時鐘分頻系數:不分頻
  52.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上計數模式

  53.   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  54.   /* PWM1 Mode configuration: Channel1 */
  55.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //配置為PWM模式1
  56.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        
  57.   TIM_OCInitStructure.TIM_Pulse = CCR1_Val;           //設置跳變值,當計數器計數到這個值時,電平發生跳變
  58.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //當定時器計數值小于CCR1_Val時為高電平

  59.   TIM_OC1Init(TIM1, &TIM_OCInitStructure);         //使能通道1

  60.   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

  61.   /* PWM1 Mode configuration: Channel2 */
  62.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  63.   TIM_OCInitStructure.TIM_Pulse = CCR2_Val;          //設置通道2的電平跳變值,輸出另外一個占空比的PWM

  64.   TIM_OC2Init(TIM1, &TIM_OCInitStructure);          //使能通道2

  65.   TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);

  66.   /* PWM1 Mode configuration: Channel3 */
  67.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  68.   TIM_OCInitStructure.TIM_Pulse = CCR3_Val;        //設置通道3的電平跳變值,輸出另外一個占空比的PWM

  69.   TIM_OC3Init(TIM1, &TIM_OCInitStructure);         //使能通道3

  70.   TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);

  71.   /* PWM1 Mode configuration: Channel4 */
  72.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  73.   TIM_OCInitStructure.TIM_Pulse = CCR4_Val;        //設置通道4的電平跳變值,輸出另外一個占空比的PWM

  74.   TIM_OC4Init(TIM1, &TIM_OCInitStructure);        //使能通道4

  75.   TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);

  76.   TIM_ARRPreloadConfig(TIM1, ENABLE);                         // 使能TIM3重載寄存器ARR

  77.   /* TIM3 enable counter */
  78.   TIM_Cmd(TIM1, ENABLE);                   //使能定時器3        
  79. }

  80. /*
  81. * 函數名:TIM3_PWM_Init
  82. * 描述  :TIM3 輸出PWM信號初始化,只要調用這個函數
  83. *         TIM3的四個通道就會有PWM信號輸出
  84. * 輸入  :無
  85. * 輸出  :無
  86. * 調用  :外部調用
  87. */
  88. void TIM3_PWM_Init(void)
  89. {
  90.         TIM3_GPIO_Config();
  91.         TIM3_Mode_Config();        
  92. }

  93. void TIM3_OUT( u16 CCR1 , u16 CCR2 , u16 CCR3 , u16 CCR4 )
  94. {
  95.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  96.         TIM_OCInitTypeDef  TIM_OCInitStructure;

  97.         /* PWM信號電平跳變值 */
  98.         u16 CCR1_Val;        
  99.         u16 CCR2_Val;
  100.         u16 CCR3_Val;
  101.         u16 CCR4_Val;

  102.         CCR1_Val=CCR1;        
  103.         CCR2_Val=CCR2;
  104.         CCR3_Val=CCR3;
  105.         CCR4_Val=CCR4;
  106.         
  107.   /* PWM1 Mode configuration: Channel1 */
  108.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //配置為PWM模式1
  109.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        
  110.   TIM_OCInitStructure.TIM_Pulse = CCR1;           //設置跳變值,當計數器計數到這個值時,電平發生跳變
  111.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //當定時器計數值小于CCR1_Val時為高電平

  112.   TIM_OC1Init(TIM1, &TIM_OCInitStructure);         //使能通道1

  113.   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

  114.   /* PWM1 Mode configuration: Channel2 */
  115.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  116.   TIM_OCInitStructure.TIM_Pulse = CCR2;          //設置通道2的電平跳變值,輸出另外一個占空比的PWM

  117.   TIM_OC2Init(TIM1, &TIM_OCInitStructure);          //使能通道2

  118.   TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);

  119.   /* PWM1 Mode configuration: Channel3 */
  120.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  121.   TIM_OCInitStructure.TIM_Pulse = CCR3;        //設置通道3的電平跳變值,輸出另外一個占空比的PWM

  122.   TIM_OC3Init(TIM1, &TIM_OCInitStructure);         //使能通道3

  123.   TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);

  124.   /* PWM1 Mode configuration: Channel4 */
  125.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  126.   TIM_OCInitStructure.TIM_Pulse = CCR4;        //設置通道4的電平跳變值,輸出另外一個占空比的PWM

  127.   TIM_OC4Init(TIM1, &TIM_OCInitStructure);        //使能通道4

  128.   TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);

  129.   TIM_ARRPreloadConfig(TIM1, ENABLE);                         // 使能TIM3重載寄存器ARR

  130.   /* TIM3 enable counter */
  131.   TIM_Cmd(TIM1, ENABLE);                   //使能定時器3               
  132. }
  133. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
復制代碼


Keil workspace.rar

410.31 KB, 下載次數: 14, 下載積分: 黑幣 -5

智能小車

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 激情五月婷婷 | 日韩一二区| 日韩国产一区二区三区 | 国产在视频一区二区三区吞精 | 99视频免费播放 | 亚洲精品成人免费 | 午夜寂寞福利视频 | 麻豆changesxxx国产 | 欧美日韩在线免费 | 国产视频91在线 | 成人特区| 成人在线视频一区 | 一区二区视频在线 | 逼逼网| 日韩一区二区三区精品 | 国产精品视频免费看 | 国产一级片免费看 | 99久久婷婷国产综合精品电影 | 久久一视频| 成人欧美一区二区三区色青冈 | 蜜桃视频一区二区三区 | 免费午夜视频 | 欧美高清视频一区 | 精品成人在线 | 日本在线一区二区 | 国产一区二区在线免费视频 | 久久久av中文字幕 | 欧美日韩不卡 | 一级a爱片性色毛片免费 | 久久av网 | 国产伦精品一区二区三区高清 | 成人在线免费网站 | 日韩中文电影 | av先锋资源 | 免费毛片网站在线观看 | 精品国产91 | 日韩视频在线观看一区二区 | 青娱乐自拍 | 国内av在线| 特黄特色大片免费视频观看 | 99av成人精品国语自产拍 |