当前位置:网站首页>Stm32f103c8t6 PWM drive steering gear (sg90)
Stm32f103c8t6 PWM drive steering gear (sg90)
2022-07-07 15:06:00 【Related to the sun_】
Little knowledge : Same timer , Different channel outputs different outputs PWM Characteristics .
For different channel outputs of the same timer PWM, Because they share a counter , therefore frequency
It has to be the same , and Duty cycle
By their own CCR
decision , It can be set separately . also , phase
Due to counter update , all PWM Will jump at the same time , So the phase is synchronous .
If you use 1 A timer controls multiple steering gears or DC motors , Use different channels of the same timer PWM, That's fine .
TIM_OC1Init(TIM2,&TIM_OCInitStructure);
TIM_OC2Init(TIM2,&TIM_OCInitStructure);
TIM_OC3Init(TIM2,&TIM_OCInitStructure);
TIM_OC4Init(TIM2,&TIM_OCInitStructure);
Code :
PWM.h
#ifndef __PWM_H
#define __PWM_H
void PWM_Init();
void PWM_SetCompare2(uint16_t Compare);
#endif
PWM.c
#include "stm32f10x.h" // Device header
void PWM_Init()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); // Turn on timer 2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);// passageway 2 Clock enable function
GPIO_InitTypeDef GPIO_InitStructure; // Definition GPIO Initializing structure variables
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // Set up GPIO For push-pull output mode
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // The speed is set to 50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); // Proceed according to the above parameters GPIO The initialization
TIM_InternalClockConfig(TIM2);//TIM The time base unit of is controlled by the internal clock
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period = 20000 - 1; //ARR The value of the automatic reloader
TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; //PSC Prescaler value Yes 72M(720000000) Conduct 7200 frequency division namely 10K At different frequencies meter 10000 Number 1s Time for
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;// Repeat counter value
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCStructInit(&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;// Output polarity selection
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;// Output status enable
TIM_OCInitStructure.TIM_Pulse = 0;//CCR, That is, the duty cycle is 10%
TIM_OC2Init(TIM2,&TIM_OCInitStructure);
TIM_Cmd(TIM2,ENABLE);
}
void PWM_SetCompare2(uint16_t Compare)
{
TIM_SetCompare2(TIM2, Compare);
}
Serco.h
#ifndef __Servo_H
#define __Servo_H
void Servo_Init(void);
void Servo_SetAngle(float Angle);
#endif
Servo.c
#include "stm32f10x.h" // Device header
#include "PWM.H"
void Servo_Init(void)
{
PWM_Init();
}
void Servo_SetAngle(float Angle)
{
PWM_SetCompare2(Angle / 180 * 2000 +500);
}
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "OLED.H"
#include "Servo.H"
uint8_t KeyNum;
float Angle; // Steering angle
int main(void)
{
OLED_Init();
Servo_Init();
Key_Init();
OLED_ShowString(1,1,"Angle:");
while (1)
{
KeyNum = Key_GetNum();
if(KeyNum == 1)
{
Angle +=30;
if(Angle > 180)
{
Angle = 0;
}
}
Servo_SetAngle(Angle);
OLED_ShowNum(1,7,Angle,3);// Show the angle on the screen
}
}
What happened :
Changed a steering gear , Then use the oscilloscope to measure that the pin is
Wave
Of , But the steering gear isImmobility
. Later it was found thatvoltage
Not enough .
Work hard , Grow slowly
边栏推荐
- asp. Netnba information management system VS development SQLSERVER database web structure c programming computer web page source code project detailed design
- What is cloud primordial? This time, I can finally understand!
- Xiaomi's path of chip self-development
- CTFshow,信息搜集:web6
- 【跟着江科大学Stm32】STM32F103C8T6_PWM控制直流电机_代码
- 【数据挖掘】视觉模式挖掘:Hog特征+余弦相似度/k-means聚类
- Zhiting doesn't use home assistant to connect Xiaomi smart home to homekit
- Niuke real problem programming - day20
- A need to review all the knowledge, H5 form is blocked by the keyboard, event agent, event delegation
- word中删除一整页
猜你喜欢
Notes HCIA
Ctfshow, information collection: web6
Unity之ASE实现卡通火焰
Pandora IOT development board learning (HAL Library) - Experiment 12 RTC real-time clock experiment (learning notes)
知否|两大风控最重要指标与客群好坏的关系分析
How bad can a programmer be? Nima, they are all talents
Xiaomi's path of chip self-development
用于增强压缩视频质量的可变形卷积密集网络
Introduction and use of Kitti dataset
Niuke real problem programming - day20
随机推荐
Niuke real problem programming - Day11
Apache multiple component vulnerability disclosure (cve-2022-32533/cve-2022-33980/cve-2021-37839)
Protection strategy of server area based on Firewall
[server data recovery] data recovery case of raid failure of a Dell server
asp.netNBA信息管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目详细设计
Jetson AGX Orin CANFD 使用
word中删除一整页
Pat grade a 1103 integer factorizatio
How does the database perform dynamic custom sorting?
Concurrency Control & NoSQL and new database
How bad can a programmer be? Nima, they are all talents
数据库如何进行动态自定义排序?
什么是pv和uv? pv、uv
PG basics -- Logical Structure Management (locking mechanism -- table lock)
Classification of regression tests
[today in history] July 7: release of C; Chrome OS came out; "Legend of swordsman" issued
Deformable convolutional dense network for enhancing compressed video quality
Ctfshow, information collection: web4
什麼是數據泄露
【目标检测】YOLOv5跑通VOC2007数据集