STM32接收串口数据-输出PWM

这篇博客介绍了如何使用STM32微控制器通过串口接收数据,并利用这些数据来调整PWM输出,控制舵机的角度。博主提供了相关的定时器初始化、PWM配置和串口通信的代码示例,实现了一个简单的PID控制系统来调整舵机的角度。
摘要由CSDN通过智能技术生成
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"		
#include "delay.h"	
#include "led.h" 
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"	
#include "string.h" 	 
//Mini STM32开发板范例代码8
//PWM输出 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com	  
//#define led_PB12   PBout(12)	   //位绑定,位定义PB12口作为LED输出。这样速度最快	   这个是开始测试用的输出口

//切记一定,要在这里修改一下
//TIM3->CCMR1|=6<<12;  //CH2 PWM2模式	与上面极性相反 平时用小灯来测试


#define deltaAngle 24//8*3						1080/320=3.375   1080/240=4.5
//下面两句为测试使用
//#define deltaErrorX 3//每转动delta角度,坐标X的改变量
//#define deltaErrorY 4//每转动delta角度,坐标Y的改变量

#define maxAngle 1520   //1520   //对应135+22.5=157.5  360--0度 720--45度  1080--90度  1440--135度 1800--180度
#define minAngle 540	//540   //对应0+22.5=22.5  因为图像是640*480的 最多产生640的差距

//#define maxAngle 1420   //1520   //对应135+22.5=157.5  360--0度 720--45度  1080--90度  1440--135度 1800--180度
//#define minAngle 640	//540   //对应0+22.5=22.5  因为图像是640*480的 最多产生640的差距
#define margine 30 //横向上最右边,范围也就是47
void tim3PWM(int changeAngle)//俯仰舵机
{	
	//PWM_Init(14400,100)定义了14400 对应20毫秒,720对应1毫秒,360对应0.5毫秒,电机的控制是0.5-2.5毫秒之间,1.5代表中位
	TIM3->CCR2 = changeAngle;			//现在TIM3的2通道 	 TIM4的1通道 都可以用了 只需要改变这句 以及main函数中的//TIM4->CCR1 = 1080;即可
	//TIM4->CCR1 = changeAngle;		
	//delay_ms(20);
}

void tim4PWM(int changeAngle)
{	
	//TIM4->CCR1 = changeAngle;	   不知道为什么总是出现1.5到2ms 再从2到1.5毫秒 跳变 貌似时钟不一样 改
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值