标题:
STM32 PWM波测试程序
[打印本页]
作者:
JETEAIME
时间:
2017-11-4 17:44
标题:
STM32 PWM波测试程序
以STM32Z8T6战舰版为主控板,通过时钟的输入捕获功能来测算输入PWM的高低电平脉宽以及占空比,并通过串口将有关PWM的数据发送至电脑
PC6口为PWM输入端口,串口一为串口通讯位。
单片机源程序如下:
#include "led.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
//PC6
extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态
extern u16 TIM5CH1_CAPTURE_VAL; //输入捕获值
extern u8 TIM3CH1_CAPTURE_STA; //输入捕获状态
extern u16 TIM3CH1_CAPTURE_VAL; //输入捕获值
int main(void)
{
u32 HIGH,LOW,high,low;
//delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
TIM3_Cap_Init(0XFFFF,71); //不分频。PWM频率=72M/360000=200Hz 2000Hz 500us 166 333 50us 16 33 5000Hz 200 66 133
//72000000/1440=50000Hz 72000000/36000/40=50Hz 20ms
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数 72/(71+1) 1us 5000us 1666 3333
/* 分频数 arr psc frequency period(us)
71 9 100000 10
144 9 50000 20
14400 9 500 2000
*/
while(1)//验证基本正确
{
TIM_SetCompare2(TIM3,2700); //72000000/144 500000 2us 10 10
if(TIM3CH1_CAPTURE_STA&0X80) //成功捕获到了一次电平宽度
{
if(TIM3CH1_CAPTURE_STA&0X40) //得到的是高电平
{
high=TIM3CH1_CAPTURE_STA&0X1F;
high*=65536; //溢出时间总和
high+=TIM3CH1_CAPTURE_VAL; //得到总的高电平时间
TIM3CH1_CAPTURE_STA=0X20; //开启下一次捕获,标记已捕获到下降沿
}
else
{
if(TIM3CH1_CAPTURE_STA&0X20) //得到的是低电平
{
low=TIM3CH1_CAPTURE_STA&0X1F;
low*=65536; //溢出时间总和
low+=TIM3CH1_CAPTURE_VAL; //得到总的低电平时间
printf("TIM3:HIGH:%d us\r\n",high); //打印总的高点平时间
printf("TIM3:LOW :%d us\r\n",low); //打印总的低点平时间
printf("TIM3:PWM :%d\r\n",(int)(high*100/(high+low))); //不能放在下面那个语句的下面
TIM3CH1_CAPTURE_STA=0; //开启下一次捕获,不连续捕获
}
} //目前最高可测频率 100,000 Hz 10us 5 5
}
if(TIM5CH1_CAPTURE_STA&0X80) //成功捕获到了一次电平宽度
{
if(TIM5CH1_CAPTURE_STA&0X40) //得到的是高电平
{
HIGH=TIM5CH1_CAPTURE_STA&0X1F;
HIGH*=65536; //溢出时间总和
HIGH+=TIM5CH1_CAPTURE_VAL; //得到总的高电平时间
TIM5CH1_CAPTURE_STA=0X20; //开启下一次捕获,标记已捕获到下降沿
}
else
{
if(TIM5CH1_CAPTURE_STA&0X20) //得到的是低电平
{
LOW=TIM5CH1_CAPTURE_STA&0X1F;
LOW*=65536; //溢出时间总和
LOW+=TIM5CH1_CAPTURE_VAL; //得到总的低电平时间
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
cal PWM.rar
(284 KB, 下载次数: 9)
2017-11-4 22:31 上传
点击文件名下载附件
PWM波测试程序
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1