中级会员
- 积分
- 254
- 金钱
- 254
- 注册时间
- 2015-11-19
- 在线时间
- 33 小时
|
1金钱
可以进中断,也配置了选项字,然后PC6一直为高电平;后来把PC6配置为输出模式,然后就一直为低电平,就是不翻转,求解!!!!!!!!!
void Tim1_CAP_Iint(void)
{
TIM1_ETR=0x00;//禁止外部时钟模式2;
TIM1_CR1=0X80;//预装载使能,边沿对齐,向上计数,禁止计数
TIM1_PSCRH=1599/256;//预分频器高 8位,1599+1=1600分频,osi=16M,
TIM1_PSCRL=1599%256;//预分频器低 8位,所以计数器加1时间是100us
TIM1_ARRH=1000/256;//预装载值65535,1s钟取反
TIM1_ARRL=1000%256;//高位寄存器先读写,再低位寄存器
TIM1_CCR1H=1000/256;
TIM1_CCR1L=1000%256;
//TIM1_EGR=0x01;//产生更新事件,初始化寄存器
TIM1_IER=0x02;//使能捕获/比较1中断
TIM1_CCMR1=0x30;//cc1配置为输出,翻转
}
/************************************************************/
/*********************定时器1输入捕获开始***************************************/
/************************************************************/
void Tim1_CAP_Begin(void)
{
TIM1_CCER1=0x01;//cc1使能比较输出
TIM1_CR1|=0x01;//使能计数器
}
void gpio_init()
{
PD_DDR|=0X08;//PD3为输出模式
PD_CR1|=0X08;//推挽输出
PD_CR2|=0X08;//输出速度10MHZ
PC_DDR|=0X40;//PD3为输出模式
PC_CR1|=0X40;//推挽输出
PC_CR2|=0X40;//输出速度10MHZ
}
#pragma vector = 14 //设置定时器4重载的中断向量号 = 25
__interrupt void TIM1_CAP_IRQHandler(void)
{
TIM1_SR1&=0XFD;//清0捕获比较1中断标志位
INTTYPE=TIM1_SR1&0X01;//取出UIF位,判断CNT是否溢出
TIM1_CCR1H+=(1000/256);
TIM1_CCR1L+=(1000%256);
if(INTTYPE==0x01)
{
TIM1_SR1&=0xfe;
}
}
|
|