新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32定時(shí)器的小問(wèn)題總結(jié)

        STM32定時(shí)器的小問(wèn)題總結(jié)

        作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏

        stm32定時(shí)器用的時(shí)候是根據(jù)原子開(kāi)發(fā)版的程序直接應(yīng)用的,用的時(shí)候也沒(méi)有具體的考量,但是在用的時(shí)候出現(xiàn)了一個(gè)問(wèn)題,就是定時(shí)器的中斷在設(shè)置之后,并沒(méi)有打開(kāi)定時(shí)器但是程序執(zhí)行到這里就會(huì)進(jìn)入中斷,如果中斷中有其他一些硬件功能,例如在定時(shí)器中發(fā)送一些數(shù)據(jù),而這個(gè)時(shí)候串口并沒(méi)有初始化時(shí),就是出現(xiàn)程序死在這里的問(wèn)題。通過(guò)網(wǎng)上查找資料發(fā)現(xiàn)是定時(shí)器中斷標(biāo)志未清除的問(wèn)題,調(diào)用TIM_ClearFlag函數(shù)之后就不會(huì)發(fā)生以上問(wèn)題了??磥?lái)在硬件配置時(shí)一定要注意這個(gè)問(wèn)題,不管是其他外圍設(shè)備的初始化都需要注意。之前看到SPI、USART等初始化的時(shí)候會(huì)經(jīng)常加上XXX_DeInit()函數(shù),看來(lái)也并非多余,對(duì)于硬件初始化是很有必要的,紀(jì)盡管在手冊(cè)上看到這些值的初始值都是0,但是在應(yīng)用中還是出現(xiàn)這種問(wèn)題,因此今后在應(yīng)用中一定的多加注意。具體初始化程序如下:

        本文引用地址:http://www.104case.com/article/201611/318483.htm

        void TIM2_Init(void)
        {
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        NVIC_InitTypeDef NVIC_InitStructure;


        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //時(shí)鐘使能
        TIM_DeInit(TIM2);
        //定時(shí)器TIM2初始化
        TIM_TimeBaseStructure.TIM_Period = 7199; //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值
        TIM_TimeBaseStructure.TIM_Prescaler =9; //設(shè)置用來(lái)作為T(mén)IMx時(shí)鐘頻率除數(shù)的預(yù)分頻值 輸出周期為T(mén)=(Prescaler+1)(Period+1)/72M
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時(shí)鐘分割:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上計(jì)數(shù)模
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位

        // TIM_ITConfig(TIM2,TIM_IT_UpdateTIM_IT_Trigger,ENABLE ); //使能指定的TIM2中斷,允許更新中斷
        TIM_ClearFlag(TIM2 , TIM_FLAG_Update); //清除中斷標(biāo)志
        TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); //使能指定的TIM2中斷,允許更新中斷


        //中斷優(yōu)先級(jí)NVIC設(shè)置
        NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM2中斷
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //先占優(yōu)先級(jí)3級(jí) 優(yōu)先級(jí)設(shè)置最低
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優(yōu)先級(jí)3級(jí)
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
        NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器

        }

        這是定時(shí)器的更新中斷,還有定時(shí)捕獲模式等,這些可以更加靈活的用于一些需要定時(shí)器的問(wèn)題中,



        關(guān)鍵詞: stm32定時(shí)

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 五莲县| 资中县| 木兰县| 航空| 吉木萨尔县| 分宜县| 厦门市| 和顺县| 兴义市| 靖州| 阿鲁科尔沁旗| 绥棱县| 揭东县| 乌鲁木齐市| 德清县| 钟祥市| 延津县| 义马市| 广元市| 阿坝县| 梁平县| 玉林市| 许昌市| 温州市| 抚松县| 和静县| 合江县| 巨野县| 清苑县| 迭部县| 平舆县| 柏乡县| 崇州市| 葫芦岛市| 班玛县| 十堰市| 延川县| 抚远县| 祁阳县| 堆龙德庆县| 本溪市|