当前位置: 首页 > news >正文

番禺怎样优化网站建设学网站建设的学校

番禺怎样优化网站建设,学网站建设的学校,给网站人做网站,做网站代理本方法采用通用定时器#xff08;TIM2、TIM3、TIM4、TIM5#xff09;实现 代码#xff1a; PWM.h #ifndef __PWM_H // 防止头文件重复包含 #define __PWM_H#include stm32f10x.h // 包含STM32F10x系列的设备头文件// 函数声明 void TIM2_PWM_In…本方法采用通用定时器TIM2、TIM3、TIM4、TIM5实现 代码 PWM.h #ifndef __PWM_H // 防止头文件重复包含 #define __PWM_H#include stm32f10x.h // 包含STM32F10x系列的设备头文件// 函数声明 void TIM2_PWM_Init(uint16_t period, uint16_t prescaler); // 初始化TIM2的PWM接受周期和预分频值作为参数 void Servo_SetAngle(uint8_t angle); // 设置舵机的角度接受一个角度值作为参数#endif // __PWM_HPWM.c #include pwm.h // 包含自定义的PWM头文件// 初始化 TIM2 产生 PWM 信号 void TIM2_PWM_Init(uint16_t period, uint16_t prescaler) {// 所有变量声明放在函数的最前面GPIO_InitTypeDef GPIO_InitStructure; // GPIO初始化结构体TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // 定时器基础配置结构体TIM_OCInitTypeDef TIM_OCInitStructure; // 输出比较配置结构体// 定时器时钟使能RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA的时钟// GPIOA Pin0 配置为复用推挽输出PWM 输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; // 选择PA0作为PWM输出引脚GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; // 设置为复用推挽输出模式GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 设置引脚速度为50MHzGPIO_Init(GPIOA, GPIO_InitStructure); // 初始化GPIOA的引脚配置// 定时器基础配置TIM_TimeBaseStructure.TIM_Period period - 1; // 设置自动重装载值ARRTIM_TimeBaseStructure.TIM_Prescaler prescaler - 1; // 设置预分频器TIM_TimeBaseStructure.TIM_ClockDivision TIM_CKD_DIV1; // 时钟分频设置TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up; // 设置为向上计数模式TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure); // 初始化TIM2基础配置// 配置 PWM 模式TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; // 选择PWM模式1TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; // 使能输出TIM_OCInitStructure.TIM_Pulse 1500; // 默认脉宽1.5ms舵机90度TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High; // 高电平有效TIM_OC1Init(TIM2, TIM_OCInitStructure); // 初始化TIM2的通道1配置// 使能 TIM2TIM_Cmd(TIM2, ENABLE); // 启动TIM2定时器 }void PWM_SetCompare1(uint16_t Compare) {TIM_SetCompare1(TIM2, Compare);//设置占空比 } Serco.h #ifndef __Servo_H #define __Servo_Hvoid Servo_Init(void); void Servo_SetAngle(float Angle);#endif Servo.c将角度转换为频率 #include stm32f10x.h // Device header #include PWM.Hvoid Servo_Init(void) {TIM2_PWM_Init(); }void Servo_SetAngle(float Angle) {PWM_SetCompare1(Angle / 180 * 2000 500); }重点同一个定时器在不同通道可以输出不同占空比的PWM波形。 根据这一特性可以实现一个定时器的不同通道控制多个舵机或直流电机。  对于同一个定时器的不同通道的PWM具有以下特性 PWM的频率与占空比 频率一致 所有通道共享同一个计数器和自动重装载寄存器ARR因此它们的PWM信号频率是相同的。频率由ARR的值和预分频器的设置决定。 占空比独立 每个通道有独立的比较寄存器CCR可以分别设置每个通道的占空比。这样就可以根据需要调整每个舵机或电机的控制信号。例如通过修改不同通道的CCR值来实现舵机的不同位置或电机的不同速度。 相位同步 由于所有通道使用同一个计数器所有PWM信号的更新是同步的。也就是说当计数器重装载时所有通道的PWM信号都会同时跳变这确保了相位的同步。 代码实现增加其他通道代码 PWM.c: #include pwm.h // 包含自定义的PWM头文件// 初始化 TIM2 产生 PWM 信号 void TIM2_PWM_Init(uint16_t period, uint16_t prescaler) {// 所有变量声明放在函数的最前面GPIO_InitTypeDef GPIO_InitStructure; // GPIO初始化结构体TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // 定时器基础配置结构体TIM_OCInitTypeDef TIM_OCInitStructure; // 输出比较配置结构体// 定时器时钟使能RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA的时钟// GPIOA Pin0 配置为复用推挽输出PWM 输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; // 选择PA0作为PWM输出引脚GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; // 设置为复用推挽输出模式GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 设置引脚速度为50MHzGPIO_Init(GPIOA, GPIO_InitStructure); // 初始化GPIOA的引脚配置// 定时器基础配置TIM_TimeBaseStructure.TIM_Period period - 1; // 设置自动重装载值ARRTIM_TimeBaseStructure.TIM_Prescaler prescaler - 1; // 设置预分频器TIM_TimeBaseStructure.TIM_ClockDivision TIM_CKD_DIV1; // 时钟分频设置TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up; // 设置为向上计数模式TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure); // 初始化TIM2基础配置// 配置 PWM 模式TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; // 选择PWM模式1TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; // 使能输出TIM_OCInitStructure.TIM_Pulse 1500; // 默认脉宽1.5ms舵机90度TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High; // 高电平有效TIM_OC1Init(TIM2, TIM_OCInitStructure); // 初始化TIM2的通道1配置// 使能 TIM2TIM_Cmd(TIM2, ENABLE); // 启动TIM2定时器 }void PWM_SetCompare1(uint16_t Compare) {TIM_SetCompare1(TIM2, Compare);//设置占空比 } void PWM_SetCompare2(uint16_t Compare) {TIM_SetCompare2(TIM2, Compare);//设置占空比 } void PWM_SetCompare3(uint16_t Compare) {TIM_SetCompare3(TIM2, Compare);//设置占空比 } void PWM_SetCompare4(uint16_t Compare) {TIM_SetCompare4(TIM2, Compare);//设置占空比 } PWM.h: #ifndef __PWM_H #define __PWM_H #include stm32f10x.h void TIM2_PWM_Init(void); void PWM_SetCompare1(uint16_t Compare); void PWM_SetCompare2(uint16_t Compare); void PWM_SetCompare3(uint16_t Compare); void PWM_SetCompare4(uint16_t Compare);#endif Servo.c: #include stm32f10x.h // Device header #include PWM.h //PWM、Servo、Movement三个文件共同为驱动舵机服务 //Servo用于封装舵机的角度设置与读取函数/*** 函 数舵机初始化* 参 数无* 返 回 值无*/ void Servo_Init(void) {PWM_Init(); //初始化舵机的底层PWM }/*** 函 数舵机设置角度* 参 数Angle 要设置的舵机角度范围0~180* 返 回 值无*/ void Servo_SetAngle1(float Angle) {PWM_SetCompare1(Angle / 180 * 2000 500); //设置占空比} void Servo_SetAngle2(float Angle) {PWM_SetCompare2(Angle / 180 * 2000 500); //设置占空比} void Servo_SetAngle3(float Angle) {PWM_SetCompare3(Angle / 180 * 2000 500); //设置占空比} void Servo_SetAngle4(float Angle) {PWM_SetCompare4(Angle / 180 * 2000 500); //设置占空比} Servo.h: #ifndef __SERVO_H #define __SERVO_H #include stm32f10x.h void Servo_Init(void); void Servo_SetAngle1(float Angle); void Servo_SetAngle2(float Angle); void Servo_SetAngle3(float Angle); void Servo_SetAngle4(float Angle);#endif
http://www.dnsts.com.cn/news/46752.html

相关文章:

  • 南阳做网站的深圳找工作哪个网站好
  • 海外建站推广企业网站建设对企业客户的意义
  • 深圳市国外网站建设网站开发的收获体会
  • 科技有限公司可以做网站建设吗?网站个别页面做seo
  • 网站建设电商考试wordpress商城模板好用吗
  • 什么网站下载素材做图的wordpress 301插件
  • 沈阳高端网站郑州网络营销公司有哪些
  • 建设网站如何收费网站研发公司
  • dede 网站地图模版长春模板建站公司
  • 高端品牌网站建设兴田德润在哪儿代理登录网站
  • 哈尔滨做网站的价格企业网站建设2017
  • 西安网站公司哪家好创建微信公众号平台
  • 网站开发软件科技公司郑州网站建设大华伟业
  • 做网批有专门的网站吗?绍兴seo推广公司
  • 茶叶商城网站建设创造与魔法官方网站-做自己喜欢的事
  • 莱芜网站优化方案零食网站建设的必要性
  • 苏州相城区做网站广告营销公司
  • 中国建设教育协会网站查网站开源源码
  • 成都网站建设哪家公司好做网站的博客
  • 网站策划常用软件wordpress主题知乎
  • 桂林网站建设内容万家灯火营销型网站
  • 适合在家做的网站工作swot分析
  • 网站建设项目进展情况汇报yy直播下载电脑版
  • 莱芜哪家企业做网站哪家企业做网站
  • 机票便宜 网站建设企业网站 空间
  • 微网站建设网络怎么搞一个服务器建设网站
  • 网站打开速度慢是什么原因北京动力 网站建设
  • 给被k的网站做友链什么语言网站比较安全
  • 龙华大浪做网站网站关键词优化排名外包
  • 福州建设网站建设网站公司怎么分工