#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毫秒 跳变 貌似时钟不一样 改
STM32接收串口数据-输出PWM
最新推荐文章于 2024-07-07 14:35:17 发布
这篇博客介绍了如何使用STM32微控制器通过串口接收数据,并利用这些数据来调整PWM输出,控制舵机的角度。博主提供了相关的定时器初始化、PWM配置和串口通信的代码示例,实现了一个简单的PID控制系统来调整舵机的角度。
摘要由CSDN通过智能技术生成