微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > MDK5 通用定时器问题

MDK5 通用定时器问题

时间:10-02 整理:3721RD 点击:
我写了个指定ms的定时器接口
但是那个ms 参数没有作用 我不管写多少 在调试时进入中断的时间间隔一直是 0.0000119s
而且程序死在了中断
我都想了一天了
都不知道问题在那
希望得到帮助
那个函数如下
void ConfigTimer2ms(u16 ms)
{
        TIM_Cmd(TIM2,DISABLE);//关闭TIM2定时器
        TIM_TimeBaseInitTypeDef timerInit;//定义TIM2的配置结构体
        NVIC_InitTypeDef NvicInt;//定义TIM2中断配置结构体
        //定时器配置
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
        timerInit.TIM_Period= 36000 -1;//设置TIM2自动填充寄存器
        timerInit.TIM_Prescaler = ()ms*2) - 1; //72M晶振 设置预分频
        timerInit.TIM_ClockDivision = TIM_CKD_div1; //设置时钟分割
        timerInit.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
        TIM_TimeBaseInit(TIM2,&timerInit);//进行定时器配置 传入TIM2的配置结构体指针
        //定时器中断配置
        TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断代处理位
        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置NVIC中断分组2
        NvicInt.NVIC_IRQChannel = TIM2_IRQn;//选择TIM2
        NvicInt.NVIC_IRQChannelPreemptionPriority = 0;//抢占优先级0
        NvicInt.NVIC_IRQChannelSubPriority = 2;//从优先级2
        NvicInt.NVIC_IRQChannelCmd = ENABLE;//TIM2通道使能
        NVIC_Init(&NvicInt);//进行定时器中断配置 传入TIM2中断的配置结构体指针
        
        TIM_Cmd(TIM2,ENABLE);//开启中断
        TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); //使能TIM2中断
}
中断函数
void TIM2_IRQHandler(void)
{
        if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
        {
                TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
                /**
                *中断服务
                **/
                KeyInterrupt();//按键处理
        }
}

经过不断调试
发现TIM_TimeBaseInit(TIM2,&timerInit);
这个无效
是怎么回事啊

我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit);
之后
提醒大家,使用有关外设 一定要先打开 他的时钟

我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit);
之后
提醒大家,使用有关外设 一定要先打开 他的时钟
------转自帖主自己

我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit);
之后
提醒大家,使用有关外设 一定要先打开 他的时钟
-----转自帖主自己

我已经知道了 是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2时钟
我在那个程序中把它写在了TIM_TimeBaseInit(TIM2,&timerInit);
之后
提醒大家,使用有关外设 一定要先打开 他的时钟
-----转自帖主自己

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top