新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2018-4-16
- 在线时间
- 9 小时
|

楼主 |
发表于 2018-5-16 07:44:32
|
显示全部楼层
原子哥,您看我这个程序为什么PA4测不出来对应的变化的电压啊?实在是有点懵。。是不是变量设置出了问题?还是少了哪个函数???
extern u8 TIM5CH1_CAPTURE_STA; //输入捕获状态
extern u16 TIM5CH1_CAPTURE_VAL;
int main(void)
{
u32 tempa=0;
u8 t=0;
u16 b;
u16 a;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
Dac1_Init(); //DAC初始化
DAC_SetChannel1Data(DAC_Align_12b_R, 0);//初始值为0
LED_Init(); //LED端口初始化
TIM1_PWM_Init(255,0); //TIM1 PWM初始化, Fpwm=72M/256=281.25Khz.
TIM_SetCompare1(TIM1,100);//初始值为0
TIM_SetCompare1(TIM1,a);//初始值
TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数
while(1)
{
t++;
delay_ms(10);
if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
{
tempa=TIM5CH1_CAPTURE_STA&0X3F;
tempa*=65536;//溢出时间总和
tempa+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
printf("HIGH:%d us\r\n",tempa);//打印总的高点平时间
a=tempa;
TIM5CH1_CAPTURE_STA=0;//开启下一次捕获
}
if(a<=1920&&a>1550 )
{ b=(a-1550)/148.00+0.8;
DAC_SetChannel1Data(DAC_Align_12b_R, b);
} //输出
else if (a<1450&&a>1080)
{ b=(a-1080)/148.00+0.8;
DAC_SetChannel1Data(DAC_Align_12b_R, b);
}
else if (a<=1550&&a>=1450)
{ b=0;
DAC_SetChannel1Data(DAC_Align_12b_R, b);
}
delay_ms(10);
}
}
|
|