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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32F103C8 PWM源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:403544 發(fā)表于 2018-10-20 17:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void RCC1_HSE_Configuration(void) //HSE作為PLL時鐘,PLL作為SYSCLK
{
   RCC_DeInit(); /*將外設RCC寄存器重設為缺省值 */
   RCC_HSEConfig(RCC_HSE_ON);          /*設置外部高速晶振(HSE) HSE晶振打開(ON)*/

   if(RCC_WaitForHSEStartUp() == SUCCESS) {  /*等待HSE起振,  SUCCESS:HSE晶振穩(wěn)定且就緒*/  

   RCC_HCLKConfig(RCC_SYSCLK_Div1);/*設置AHB時鐘(HCLK)RCC_SYSCLK_Div1——AHB時鐘 = 系統(tǒng)時*/  
   RCC_PCLK2Config(RCC_HCLK_Div1); /*設置高速AHB時鐘(PCLK2)RCC_HCLK_Div1——APB2時鐘 = HCLK*/     
   RCC_PCLK1Config(RCC_HCLK_Div2); /*設置低速AHB時鐘(PCLK1)RCC_HCLK_Div2——APB1時鐘 = HCLK / 2*/      

   RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/*設置PLL時鐘源及倍頻系數(shù)*/   
   RCC_PLLCmd(ENABLE);          /*使能PLL */
   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; /*檢查指定的RCC標志位(PLL準備好標志)設置與否*/

   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  /*設置系統(tǒng)時鐘(SYSCLK) */  
   while(RCC_GetSYSCLKSource() != 0x08);     /*0x08:PLL作為系統(tǒng)時鐘 */            
}
}
void TurnLeft1()
{  

         IN1_H IN2_L
         IN3_H IN4_L
         XX=500;
         YY=800;       
         TimCounterInit1(XX,YY);

}
void TurnRight1(void)
{
         IN1_H IN2_L
         IN3_H IN4_L
         XX=800;
         YY=500;       
        TimCounterInit1(XX,YY);

}
void straight1(void)
{
         IN1_H IN2_L
         IN3_H IN4_L
         XX=600;
         YY=600;
  TimCounterInit1(XX,YY);
}

void sternway1(void)
{
        IN1_L        IN2_H       
        IN3_L IN4_H       
        XX=700;
        YY=700;       
        TimCounterInit1(XX,YY);
}

void Gpio_PWM_Init1(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
  //以下設定是將TIM1的通道1(PA0)的復用功能打開,這很重要很容易被忘掉
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

        GPIO_InitStructure.GPIO_Pin        = GPIO_PWM_8;              //選擇PA0 PA8|GPIO_PWM_B
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;          //管腳頻率為50MHZ
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;         //模式為復用推挽輸出
  GPIO_Init(GPIO_A, &GPIO_InitStructure);           //初始化寄存器
}

void Gpio_M_Init1(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

        GPIO_InitStructure.GPIO_Pin        = GPIO_Pin_IN1|GPIO_Pin_IN2|GPIO_Pin_IN3|GPIO_Pin_IN4;              //選擇1256
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;          //管腳頻率為50MHZ
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
  GPIO_Init(GPIO_IN, &GPIO_InitStructure);           //初始化寄存器GPIOB  1 2 5 6
}

/********************************************************************************************
*函數(shù)名稱:void TimCounterInit(void)
*功能說明:TIM計數(shù)初始化配置
*               TIMCLK = 72 MHz, Prescaler = TIM_PSC, TIM counter clock = TIMCLK/TIM_COUNTER MHz
*******************************************************************************************/
void TimCounterInit1(int rate_1,int rate_2)        //rate可以改變占空比
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       
        /* TIM時鐘使能 */
        RCC_APB1PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

        /* 基定時器初始化 */
        TIM_TimeBaseStructure.TIM_Period = 1000000*0.001;        //計數(shù)值 1000;須介于0~65535
        TIM_TimeBaseStructure.TIM_Prescaler = 72;          //分頻系數(shù),為了設定值數(shù)值較大,這里選得較小                 
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;                //時鐘分割:計數(shù)模式中無作用
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;        //計數(shù)模式,向上計數(shù)
        TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;        //重復計數(shù)值

        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);                //初始化TIM
       
        /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;//輸出模式設定
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//輸出模式使能
  TIM_OCInitStructure.TIM_Pulse = rate_1; //設置占空比,0時全低電平,1001時全高電平.須介于0~65535
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//輸出比較極性;最終輸出值是高/低電平

        TIM_OC1Init(TIM1, &TIM_OCInitStructure);//輸出通道x,參數(shù)寫入
        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);//使能通道x預裝載寄存器       
       
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;//輸出模式設定
        TIM_OCInitStructure.TIM_Pulse = rate_2; //設置占空比,0時全低電平,1001時全高電平.須介于0~65535
        TIM_OC2Init(TIM1, &TIM_OCInitStructure);//輸出通道x,參數(shù)寫入
        TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);//使能通道x預裝載寄存器
        TIM_Cmd(TIM1, ENABLE);                                                //使能TIM
}


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情在线观看一区二区三区 | 亚洲欧美一区二区在线观看 | 亚洲成av | 久久中文字幕电影 | 欧美国产日韩一区二区三区 | 日韩视频在线观看中文字幕 | 午夜激情一区 | 欧美成人第一页 | 男人天堂av网| 久久一区精品 | 欧美日韩国产中文 | 天天拍天天操 | 一区二区三区欧美在线观看 | 日韩在线播放视频 | 日本不卡一区二区三区 | 国产激情视频在线免费观看 | 欧美日韩国产中文 | 国产欧美一区二区三区久久手机版 | 久久精品久久久久久 | 一区二区中文字幕 | 国产欧美精品一区二区色综合朱莉 | 狠狠操你 | 国产午夜精品久久久 | 成人在线免费观看 | 日韩 欧美 综合 | 91啪影院| 日本视频中文字幕 | 日韩在线精品强乱中文字幕 | 午夜精品一区二区三区在线视频 | 日韩精品网站 | 色性av| 黄色免费av| 99pao成人国产永久免费视频 | 色婷婷一区二区三区四区 | 成人av免费在线观看 | 九九av | 久草电影网 | 97精品一区二区 | 自拍偷拍中文字幕 | 黄色电影在线免费观看 | 国产精品久久久久久久免费大片 |