|
发表于 2022-12-15 13:30:09
|
显示全部楼层
本帖最后由 yanwei0433 于 2022-12-15 13:54 编辑
这是我单独弄的pwm捕捉测试 时钟24m 波特率9600,加了让PWM中断处理完才能再处理的标志 得到的计数器值为负数
分频之后就不是负数了 和测试的一样了
main.t3.txt="-10868"\xFF\xFF\xFF
main.t5.txt="-17088"\xFF\xFF\xFF
#include <STC32G.H>
#include <intrins.h>
#include <stdio.h>
#include <string.h>
#include <UART.h>
unsigned int cnt1,cnt2,a,b;
//==================== 主函数 ===========================
void main()
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
PWMA_CCER1=0x00;
PWMA_CCMR1=0x01; //CC1为输入模式,且映射到TI1FP1上
PWMA_CCMR2=0x02; //CC2为输入模式,且映射到TI1FP2上
PWMA_CCER1=0x11; //使能CC1/CC2上的捕获功能
PWMA_CCER1|=0x00; //设置捕获极性为CC1的上升沿
PWMA_CCER1|=0x20; //设置捕获极性为CC2的下降沿
PWMA_SMCR=0x54; //TS=TI1FP1,SMS=TI1上升沿复位模式
PWMA_CR1=0x01; //开启计数器
PWMA_IER=0x06; //使能CC1/CC2捕获中断
UART_Init();
EA = 1; //打开总中断
while(1);
}
void PWMA_ISR() interrupt 26 //PWM中断 P10脚
{
if (PWMA_SR1 & 0x02)
{
if(a==0)
{
a=1;
PWMA_SR1 &= ~0x02;
cnt1=(PWMA_CCR1H<<8)+PWMA_CCR1L; //CC1捕捉周期
printf("main.t3.txt=\"%d\"",cnt1);
UART_Send_END();
a=0;
}
}
if (PWMA_SR1 & 0x04)
{
if(b==0)
{
b=1;
PWMA_SR1 &= ~0x04;
cnt2=(PWMA_CCR2H<<8)+PWMA_CCR2L; //CC2捕捉占空比
printf("main.t5.txt=\"%d\"",cnt2);
UART_Send_END();
b=0;
}
}
}
void XQD() interrupt 4
{
if(TI) //TI=1,判断是否发送完成
{
TI = 0; //软件清零发送中断标志位TI
}
}
|
-
|