找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7261|回復(fù): 17
收起左側(cè)

STM32驚天大BUG,定時(shí)器1,8,和定時(shí)器6初始化順序的BUG

  [復(fù)制鏈接]
ID:644357 發(fā)表于 2021-3-8 20:28 | 顯示全部樓層 |閱讀模式
眾所周知,初始化先后順序是不會影響到while(1)循環(huán)體的,但是TIM1,8和TIM6之間的初始化先后順序,直接影響兩個(gè)定時(shí)器能否正常工作

例子,TIM8用作輸出4路PWM波,
          TIM6用作定時(shí)延時(shí),
    初始化
         TIM6_init();
         TIM8_init();



于是,PC6,7,8,9,只有C9有波形,

調(diào)換位置之后,皆大歡喜,一切正常,

我使用了FreeRTOS,因?yàn)檫@個(gè)問題抓狂了2天2夜,結(jié)果就一順序產(chǎn)生的問題,深感恥辱,發(fā)帖紀(jì)念。
回復(fù)

使用道具 舉報(bào)

ID:669393 發(fā)表于 2021-3-10 01:35 | 顯示全部樓層
定時(shí)器6用到中斷了嗎?如果用到并且沒有在定時(shí)器初始化函數(shù)里面清空中斷標(biāo)志位,main函數(shù)里初始化的時(shí)候會自動執(zhí)行一次定時(shí)器中斷,進(jìn)入中斷函數(shù),如果正好中斷里有未初始化的內(nèi)容,程序就會卡死在中斷里, 你的TIM6_init()中斷函數(shù)里肯定有TIM8相關(guān)內(nèi)容。程序進(jìn)入不了定時(shí)器8初始化函數(shù)里,也就是無法產(chǎn)生pwm波。你調(diào)換了順序,其實(shí)是先執(zhí)行了tim8初始化,再執(zhí)行tim6初始化,自動進(jìn)入一次中斷,這時(shí)候中斷服務(wù)函數(shù)恰好能正常執(zhí)行?隙ㄊ浅绦虻膯栴},不可能是bug
回復(fù)

使用道具 舉報(bào)

ID:830831 發(fā)表于 2021-3-8 23:03 | 顯示全部樓層
我靠,還能這樣?  啥開發(fā)環(huán)境呀?
回復(fù)

使用道具 舉報(bào)

ID:866661 發(fā)表于 2021-3-9 09:51 | 顯示全部樓層
這種情況很常見,LCD液晶顯示初始化順序調(diào)換一下就不能顯示!
回復(fù)

使用道具 舉報(bào)

ID:337834 發(fā)表于 2021-3-9 11:58 | 顯示全部樓層
多看看自己的代碼,畢竟STM32都是經(jīng)過市場驗(yàn)證的
回復(fù)

使用道具 舉報(bào)

ID:276761 發(fā)表于 2021-3-9 12:45 | 顯示全部樓層
會不會其他地方有問題你沒發(fā)現(xiàn)
回復(fù)

使用道具 舉報(bào)

ID:95703 發(fā)表于 2021-3-9 14:00 | 顯示全部樓層
會不會是 TIM6_init()的時(shí)鐘沒使能,到了  TIM8_init();才使能。
回復(fù)

使用道具 舉報(bào)

ID:644357 發(fā)表于 2021-3-9 18:45 | 顯示全部樓層
天地摩登恒 發(fā)表于 2021-3-9 14:00
會不會是 TIM6_init()的時(shí)鐘沒使能,到了  TIM8_init();才使能。

定時(shí)器8,6都是分開的,用的固件庫,這種錯(cuò)誤檢查了好幾遍
回復(fù)

使用道具 舉報(bào)

ID:759755 發(fā)表于 2021-3-9 19:27 | 顯示全部樓層
這個(gè)和順序沒關(guān)系吧
回復(fù)

使用道具 舉報(bào)

ID:493780 發(fā)表于 2021-3-9 20:55 | 顯示全部樓層
你這個(gè)是stm32哪個(gè)型號的
回復(fù)

使用道具 舉報(bào)

ID:830831 發(fā)表于 2021-3-10 09:34 | 顯示全部樓層
Nevergp 發(fā)表于 2021-3-9 11:58
多看看自己的代碼,畢竟STM32都是經(jīng)過市場驗(yàn)證的

坑多的很,只是你不知道
回復(fù)

使用道具 舉報(bào)

ID:830831 發(fā)表于 2021-3-10 09:39 | 顯示全部樓層
SPEAR 發(fā)表于 2021-3-10 01:35
定時(shí)器6用到中斷了嗎?如果用到并且沒有在定時(shí)器初始化函數(shù)里面清空中斷標(biāo)志位,main函數(shù)里初始化的時(shí)候會 ...

比較靠譜的分析,樓主試試看
回復(fù)

使用道具 舉報(bào)

ID:890487 發(fā)表于 2021-3-10 19:03 | 顯示全部樓層
具體是哪個(gè)型號
回復(fù)

使用道具 舉報(bào)

ID:531542 發(fā)表于 2021-3-12 13:30 | 顯示全部樓層
個(gè)人覺得,和順序沒有太大的關(guān)系,除非是你的一些局部變量沒有初始化,或者其他的一些BUG導(dǎo)致,你可以貼出代碼給大家瞅瞅。。
回復(fù)

使用道具 舉報(bào)

ID:644357 發(fā)表于 2021-3-19 21:19 | 顯示全部樓層
SPEAR 發(fā)表于 2021-3-10 01:35
定時(shí)器6用到中斷了嗎?如果用到并且沒有在定時(shí)器初始化函數(shù)里面清空中斷標(biāo)志位,main函數(shù)里初始化的時(shí)候會 ...
  1. void TIM6_IRQHandler(void)
  2. {
  3.         if(TIM_GetITStatus(TIM6,TIM_IT_Update)!=RESET)
  4.         {
  5.                 if(Global_time_ms>0){
  6.                         Global_time_ms--;
  7.                 }
  8. //                if(Global_time_us>0){
  9. //                        Global_time_us--;
  10. //}
  11. //                if(Infraredcnt<300){Infraredcnt++;} else{read_all_status();Infraredcnt=0;}
  12.                 TIM_ClearITPendingBit(TIM6,TIM_FLAG_Update);
  13.         }
  14. }
復(fù)制代碼

這個(gè)延時(shí)函數(shù)就沒用到他,在閑置,代碼維護(hù)過了好長時(shí)間,可能就是大哥你說的這個(gè)情況。
不過學(xué)到了,初始化會自動執(zhí)行一次中斷
回復(fù)

使用道具 舉報(bào)

ID:644357 發(fā)表于 2021-3-19 21:20 | 顯示全部樓層
kidxpp 發(fā)表于 2021-3-10 19:03
具體是哪個(gè)型號

103ZET6
回復(fù)

使用道具 舉報(bào)

ID:519089 發(fā)表于 2021-7-14 21:25 | 顯示全部樓層
肯定是代碼問題,不用多想~~~~~
回復(fù)

使用道具 舉報(bào)

ID:698693 發(fā)表于 2021-7-18 00:53 | 顯示全部樓層
我也出現(xiàn)了類似的情況    TIM1和TIM3的初始化順序不能反   TIM1要在前
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表