触摸按键初始值可以不可以在捕获中断里得到?原子哥帮我看看代码

2019-07-20 14:36发布

例程里是用CCR1得到电容充电值,我想在TIM2的中断里得到这个值,现在的情况是不进TIM2中断,原子哥帮我看看问题出在哪里,是不是思路不行?

main函数:

int main()
{
        Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz
        NVIC_SetPriorityGrouping(7 - 2);//
        usart1_init(115200);
        Tpad_Init(21, 0xffffffff);
        while(1);
}



tpad.c文件:

u8 wait;
u8 start = 0xff;
u32 CNT[10];
void Tpad_Init(u16 psc, u32 arr)
{
        u8 i;
        u32 sum = 0;
        //TIM2初始化
        RCC->APB1ENR |= 0x01; //TIM2时钟使能
        TIM2->DIER |= 0x01 << 1; //使能捕获中断
        TIM2->CCMR1 |= 0x01; //输入,IC1映射到TI1上面
        TIM2->CCER |= 0x01; //使能捕获模式
        TIM2->PSC = psc; //设置分频
        TIM2->ARR = arr; //设置计数
        NVIC_SetPriority(TIM2_IRQn, NVIC_EncodePriority(7 - 2, 3, 3));
        NVIC_EnableIRQ(TIM2_IRQn);
        for(i = 0; i < 10; i++)
        {
                TIM2->CR1 &= ~0x01; //关闭定时器
                wait = 1; //置等待下一次开始标志
                RCC->AHB1ENR |= 0x01 << 5; //GPIOA时钟使能
                GPIOA->MODER |= 0x01 << 10; //PA5通用输出
                GPIOA->PUPDR |= 0x02 << 10; //PA5下拉电阻
                GPIOA->BSRRH |= 0X01 << 5; //将PA5内部接地
                systick_delayms(10); //等待放电完成
               
                //PA5配置为复用,推挽,2MHZ,下拉电阻
                GPIOA->MODER |= 0x02 << 10; //复用功能
                GPIOA->AFR[0] &= 0xff0fffff;
                GPIOA->AFR[0] |= 0xff1fffff; //配置为复用功能
                TIM2->EGR |= 0x01; //重新初始化计数器
                TIM2->CR1 |= 0x01; //使能计数器
                while(wait);
        }
        start = 0;
        Sort_Number(CNT);
        for(i = 1; i < 9; i++)
        {
                sum = sum + CNT[i++] / 8;
        }
        printf("sum = %d ", sum);
}


TIM2中断函数

static u8 num = 0;
void TIM2_IRQHandler(void)
{
        if(start == 0xff)
        {
                CNT[num++] = TIM2->CNT;
                wait = 0;
        }
        TIM2->SR &= ~(0x01 << 1); //清中断
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
慢慢炖
1楼-- · 2019-07-20 18:28
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 23:34
你这个实现原理,和我们的不一样啊。进不了中的,说明你设置的中断触发条件没满足,或者设置有误。

一周热门 更多>