日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 定时器输出PWM原理及工作原理+控制舵机

發布時間:2024/3/7 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 定时器输出PWM原理及工作原理+控制舵机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.PWM的工作原理

2.PWM的內部運作機制

3.PWM的模式

模塊一? 邊沿對齊模式

模塊二 中央對齊模式

4.自動加載的預加載寄存器

5.定時器輸出PWM結構體講解

6.定時器輸出PWM庫函數講解

?

定時器輸出PWM+控制舵機

按步驟去配置

motor.c #include "stm32f10x.h" // Device header#include "motor.h"void motor_config(void) {GPIO_InitTypeDef GPIO_MotorInit; //1.GPIO結構體TIM_TimeBaseInitTypeDef TIM_MotorInit; //2.配置通用定時器結構體TIM_OCInitTypeDef TIMPWN_MotorInit; //3.配置定時去輸出PWM結構體 +下邊的 TIM_OC2Init TIM_OC2PreloadConfig TIM_CmdRCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); //4.1 打開GPIO時鐘RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3, ENABLE); //4.2 打開定時器時鐘RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO, ENABLE); //復用使能時鐘GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 , ENABLE ); //4.3 部分重映射時鐘GPIO_MotorInit.GPIO_Mode = GPIO_Mode_AF_PP;//復用推挽輸出GPIO_MotorInit.GPIO_Pin = GPIO_Pin_5;GPIO_MotorInit.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init( GPIOB, &GPIO_MotorInit );TIM_MotorInit.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割TIM_MotorInit.TIM_CounterMode = TIM_CounterMode_Up; //計數模式 TIM向上計數TIM_MotorInit.TIM_Period = 200 - 1 ; //重裝載值 設置在下一個更新事件裝入活動的重裝載值TIM_MotorInit.TIM_Prescaler = 7200 - 1 ; //預分頻 TIMx時鐘頻率預分頻值TIM_TimeBaseInit( TIM3, &TIM_MotorInit);TIMPWN_MotorInit.TIM_OCIdleState = TIM_OCMode_PWM1; //選擇定時器模式1TIMPWN_MotorInit.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能TIMPWN_MotorInit.TIM_OCPolarity = TIM_OCPolarity_Low; //選擇有效輸出極性TIM_OC2Init( TIM3, &TIMPWN_MotorInit ); //選擇的是定時器3的通道2 所以用OC2TIM_OC2PreloadConfig( TIM3, TIM_OCPreload_Enable); //自動加載的預加載寄存器 使能TIM_Cmd( TIM3, ENABLE);} motor.h #include "stm32f10x.h" // Device headervoid motor_config(void); main.c #include "stm32f10x.h" // Device header #include "usart.h" #include "led.h" #include "tim.h" #include "motor.h"void delay(uint16_t time) {uint16_t i = 0;while(time--){i=12000;while(i--);} }int main(void) {uint16_t pwmval = 155; // 大約3/4 155/200motor_config();while(1){for(pwmval = 195;pwmval >= 175;pwmval-=5){TIM_SetCompare2( TIM3, pwmval); //5. 配置PWM比較值delay(500);//0.5s}} }

?

總結

以上是生活随笔為你收集整理的stm32 定时器输出PWM原理及工作原理+控制舵机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。