久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

一個關(guān)于STM32F072芯片USART喚醒的話題

[復(fù)制鏈接]
ID:98618 發(fā)表于 2015-12-8 03:47 | 顯示全部樓層 |閱讀模式
整理:MilerShao


近日某工程師電話我說他在使用STM32F072芯片開發(fā)產(chǎn)品,發(fā)現(xiàn)USART2中斷無法從將芯片從STOP模式喚醒。他說也是折騰幾天了,翻來覆去都查不出問題所在,懷疑芯片是否真具有該功能。因為之前有其它客戶用到該功能,我告知確實可行,建議他再耐心檢查

一天后我們再次網(wǎng)絡(luò)聯(lián)絡(luò),告知仍然無法實現(xiàn)USART喚醒STOP狀態(tài)。我查看其相關(guān)程序代碼,代碼是基于STM32F0系列傳統(tǒng)固件庫編寫的。將客戶代碼結(jié)合32f0系列的技術(shù)參考手冊來看了兩遍并未發(fā)現(xiàn)什么明顯問題。

因為STM32F0系列官方固件庫里有相關(guān)例程項目,打開官方例程代碼和參考手冊比對時,有個地方引起了我的注意。那就是USART是時鐘源問題。


我注意到ST官方例程里在配置USART的喚醒功能時,有條關(guān)于USART時鐘源的配置代碼,而客戶代碼里卻沒有相應(yīng)代碼。從參考手冊相關(guān)描述來看,只有USART時鐘源選為HSI或LSE時才具備將芯片從STOP模式喚醒的功能。問題很可能出在這里,讓客戶在USART的配置函數(shù)里加上如下語句后再測試,結(jié)果一切正常了。

/* Configure the HSI as USART clock */

RCC_USARTCLKConfig(RCC_USART2CLK_HSI);

顯然,問題正是出在這個USART2的時鐘的配置上。下圖是STM32F072芯片的RCC時鐘樹?梢钥闯觯琔SART可以有四個時鐘源。即PCLK/SYSCLK/HSI/LSE.


現(xiàn)在客戶代碼里沒有對USART2的時鐘源做明確配置,只是做了時鐘的使能配置。不難理解MCU硬件使用了默認(rèn)值,那默認(rèn)時鐘源是哪一個呢?


從相關(guān)寄存器位可以得知,USART2的默認(rèn)時鐘源是PCLK,既不是HSI也不是LSE。難怪客戶死活沒法利用USART中斷將STOP模式下的STM32F072喚醒了。

可能很多人用過STM32F1系列芯片,相比之下,STM32F0系列在時鐘這塊跟F1存在諸多不一樣的地方,使用時要注意。


ST官方針對各系列的MCU都有較為完善參考固件庫,針對各外設(shè)的應(yīng)用多有例程供使用者學(xué)習(xí)參考和使用。那些參考庫代碼整體上講都有很高的參考和使用價值。尤其各工程項目里的有關(guān)配置流程值得借鑒使用。

我這里順便多聊幾句。如果你對官方例程項目里的部分代碼不確定是否有用或是否需要時建議不要輕易舍棄不用,先留著,哪怕注釋在那兒也好,至少是個提醒。最好借助于參考手冊和實驗弄明白怎么回事。經(jīng)常有人在并不了解部分代碼功能的前提下,直接棄掉不用而給自己帶來不必要的麻煩。

比方前面談到的32F072 USART2喚醒STOP模式的問題,參考例程里其實就有相關(guān)USART時鐘源配置代碼,而客戶工程師在自己代碼里卻不假思索地直接拿掉了。

記得前不久有位工程師利用STM32F3系列的AD功能,訴說AD取得的結(jié)果總是不準(zhǔn),總是找不到原因。跟著他一起看了硬件線路再看他的軟件配置代碼,結(jié)果發(fā)現(xiàn)有關(guān)AD校準(zhǔn)相關(guān)代碼根本就沒有。問他為什么不參考官方例程代碼來寫,他說覺得相關(guān)代碼沒用就拿掉了。

我還依稀記得幾年前有個北方工程師用STM32F1系列開發(fā)產(chǎn)品,項目開發(fā)前期芯片工主頻較低,各個功能都好好的,后來發(fā)現(xiàn)將系統(tǒng)時鐘調(diào)高到72M時出現(xiàn)很多奇怪的問題,把時鐘調(diào)低到一定數(shù)值又運行正常。跟他一起問來問去,結(jié)果發(fā)現(xiàn)有關(guān)與指令預(yù)取及FLASH訪問等待周期的配置代碼被抹掉了【那是基于早期的固件庫代碼】。

還有,官方庫代碼里的有些代碼配置流程也不是亂來的,其先后順序可能影響最后的結(jié)果。還有就不多說了,拋磚引玉,算是對同仁的一些提醒。愿各位在開發(fā)過程中少點折騰之苦,多些順暢。整理:MilerShao


近日某工程師電話我說他在使用STM32F072芯片開發(fā)產(chǎn)品,發(fā)現(xiàn)USART2中斷無法從將芯片從STOP模式喚醒。他說也是折騰幾天了,翻來覆去都查不出問題所在,懷疑芯片是否真具有該功能。因為之前有其它客戶用到該功能,我告知確實可行,建議他再耐心檢查

一天后我們再次網(wǎng)絡(luò)聯(lián)絡(luò),告知仍然無法實現(xiàn)USART喚醒STOP狀態(tài)。我查看其相關(guān)程序代碼,代碼是基于STM32F0系列傳統(tǒng)固件庫編寫的。將客戶代碼結(jié)合32f0系列的技術(shù)參考手冊來看了兩遍并未發(fā)現(xiàn)什么明顯問題。

因為STM32F0系列官方固件庫里有相關(guān)例程項目,打開官方例程代碼和參考手冊比對時,有個地方引起了我的注意。那就是USART是時鐘源問題。


我注意到ST官方例程里在配置USART的喚醒功能時,有條關(guān)于USART時鐘源的配置代碼,而客戶代碼里卻沒有相應(yīng)代碼。從參考手冊相關(guān)描述來看,只有USART時鐘源選為HSI或LSE時才具備將芯片從STOP模式喚醒的功能。問題很可能出在這里,讓客戶在USART的配置函數(shù)里加上如下語句后再測試,結(jié)果一切正常了。

/* Configure the HSI as USART clock */

RCC_USARTCLKConfig(RCC_USART2CLK_HSI);

顯然,問題正是出在這個USART2的時鐘的配置上。下圖是STM32F072芯片的RCC時鐘樹?梢钥闯,USART可以有四個時鐘源。即PCLK/SYSCLK/HSI/LSE.


現(xiàn)在客戶代碼里沒有對USART2的時鐘源做明確配置,只是做了時鐘的使能配置。不難理解MCU硬件使用了默認(rèn)值,那默認(rèn)時鐘源是哪一個呢?


從相關(guān)寄存器位可以得知,USART2的默認(rèn)時鐘源是PCLK,既不是HSI也不是LSE。難怪客戶死活沒法利用USART中斷將STOP模式下的STM32F072喚醒了。

可能很多人用過STM32F1系列芯片,相比之下,STM32F0系列在時鐘這塊跟F1存在諸多不一樣的地方,使用時要注意。


ST官方針對各系列的MCU都有較為完善參考固件庫,針對各外設(shè)的應(yīng)用多有例程供使用者學(xué)習(xí)參考和使用。那些參考庫代碼整體上講都有很高的參考和使用價值。尤其各工程項目里的有關(guān)配置流程值得借鑒使用。

我這里順便多聊幾句。如果你對官方例程項目里的部分代碼不確定是否有用或是否需要時建議不要輕易舍棄不用,先留著,哪怕注釋在那兒也好,至少是個提醒。最好借助于參考手冊和實驗弄明白怎么回事。經(jīng)常有人在并不了解部分代碼功能的前提下,直接棄掉不用而給自己帶來不必要的麻煩。

比方前面談到的32F072 USART2喚醒STOP模式的問題,參考例程里其實就有相關(guān)USART時鐘源配置代碼,而客戶工程師在自己代碼里卻不假思索地直接拿掉了。

記得前不久有位工程師利用STM32F3系列的AD功能,訴說AD取得的結(jié)果總是不準(zhǔn),總是找不到原因。跟著他一起看了硬件線路再看他的軟件配置代碼,結(jié)果發(fā)現(xiàn)有關(guān)AD校準(zhǔn)相關(guān)代碼根本就沒有。問他為什么不參考官方例程代碼來寫,他說覺得相關(guān)代碼沒用就拿掉了。

我還依稀記得幾年前有個北方工程師用STM32F1系列開發(fā)產(chǎn)品,項目開發(fā)前期芯片工主頻較低,各個功能都好好的,后來發(fā)現(xiàn)將系統(tǒng)時鐘調(diào)高到72M時出現(xiàn)很多奇怪的問題,把時鐘調(diào)低到一定數(shù)值又運行正常。跟他一起問來問去,結(jié)果發(fā)現(xiàn)有關(guān)與指令預(yù)取及FLASH訪問等待周期的配置代碼被抹掉了【那是基于早期的固件庫代碼】。

還有,官方庫代碼里的有些代碼配置流程也不是亂來的,其先后順序可能影響最后的結(jié)果。還有就不多說了,拋磚引玉,算是對同仁的一些提醒。愿各位在開發(fā)過程中少點折騰之苦,多些順暢。

回復(fù)

使用道具 舉報

ID:383785 發(fā)表于 2020-4-21 16:37 | 顯示全部樓層
挺不錯的調(diào)試經(jīng)驗,學(xué)習(xí)了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产免费国产 | 免费国产成人av | 夜夜爽99久久国产综合精品女不卡 | 欧美一级视频免费看 | 国产精品久久久久一区二区三区 | 中文字幕日韩欧美一区二区三区 | 亚洲一区二区三区视频 | 天天天操操操 | 亚洲天堂成人在线视频 | 色综合美女 | 超碰在线免费av | 91精品一区二区 | 97久久精品午夜一区二区 | 超碰在线播 | 午夜视频在线免费观看 | 成人网av | 91精品久久久久久久 | 91精品国产91久久久久久丝袜 | 亚洲精品久久久蜜桃 | 日韩免费视频 | 91免费观看 | 色吧色综合 | 精品国产乱码久久久久久闺蜜 | 精品福利一区二区三区 | 国产成人精品a视频 | 亚洲精品福利在线 | 日韩一二三区视频 | 夜夜骑首页 | 羞羞的视频网站 | 久久精品国产一区老色匹 | 久久国产综合 | 亚洲综合区 | 黄色成人免费在线观看 | 久久国产精品久久久久久久久久 | 日韩精品无码一区二区三区 | h免费观看 | 人妖无码 | 日日操操操 | 国产第一页在线观看 | 亚洲三级免费看 | 国产高潮好爽受不了了夜色 |