关于 中断中读取CNT的值

2019-10-15 03:11发布

我把 TIMER1 和 TIMER8 配置成外部时钟模式2 记录外部脉冲数
TIMER7定时溢出读取 TIMER1和TIMER8的CNT的值,在其他地方读取CNT的值就好使,但在TIMER7中断里,不能把TIMER1 和 TIMER8计数器的值赋值给变量

请各位帮忙看看怎么回事
//定时器 7 中断服务程序
void TIM7_IRQHandler(void)
{
               
if(TIM7->SR&0X0001) //溢出中断
{
        zi=TIM1->CNT;
        yi=TIM8->CNT;

        TIM7->SR&=~(1<<0); //清除中断标志位
}
}
void TIM7_Int_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<5; //TIM7 时钟使能
TIM7->ARR=arr; //设定计数器自动重装值//刚好 0.1ms
TIM7->PSC=psc; //预分频器 7200,得到 10Khz 的计数时钟
TIM7->DIER|=1<<0; //允许更新中断
TIM7->CR1|=0x01; //使能定时器 7
MY_NVIC_Init(2,2,TIM7_IRQn,2);//抢占 2,子优先级 2,组 2
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
aiyiyi
1楼-- · 2019-10-15 06:01
void TIM8_Measure(u16 arr,u16 psc)   //PA0
{
        RCC->APB2ENR|=1<<13; //TIM8时钟使能
        RCC->APB2ENR|=1<<2; //使能 PORTA 时钟
        GPIOA->CRL&=0XFFFFFFF0; //PA0 清除之前设置
        GPIOA->CRL|=0X00000008; //PA0 输入
        GPIOA->ODR|=0<<0; //PA0 下拉
        TIM8->ARR=arr; //设定计数器自动重装值
        TIM8->PSC=psc; //预分频器
//外部时钟模式2
        TIM8->SMCR&=0xF0FF;
        TIM8->SMCR|=0x4000;
        TIM8->CR1|=1<<0;
}

这是我对TIM1 和 8的设置
aiyiyi
2楼-- · 2019-10-15 09:06
@正点原子
原子哥 麻烦帮看一下
正点原子
3楼-- · 2019-10-15 13:35
仿真跟踪看看
憨厚诚实大叔
4楼-- · 2019-10-15 16:37
你先确定能进入中断先

一周热门 更多>