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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3058|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32 MCU勿忘初始

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:98618 發(fā)表于 2016-4-17 20:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  咋看題目,貌似有點(diǎn)情感類文字了。呵呵,當(dāng)然不是,至少不完全是。這里是指在MCU開發(fā)過程中不要完全無(wú)視或忽視復(fù)位后各模塊的初始狀態(tài)及各寄存器的默認(rèn)初始值的意思。


   我們知道,除了個(gè)別模塊或寄存器在MCU復(fù)位后其初始值或初始狀態(tài)是不確定的外,其它模塊及相應(yīng)寄存器都呈現(xiàn)一個(gè)確定的初始狀態(tài)或初始值。由于這些復(fù)位后的初始狀態(tài)或初始值可能跟我們應(yīng)用開發(fā)所期待的不一致,常常在應(yīng)用程序的開始部分重新根據(jù)實(shí)際需求對(duì)相關(guān)寄存器做初始化配置。其中有些寄存器對(duì)用戶來(lái)說(shuō)是只讀的,用戶程序一般不必自行手動(dòng)初始化。但這也并不代表我們對(duì)這類寄存器可以完全視而不見或置之不理,比方狀態(tài)寄存器。我們使用相關(guān)外設(shè)時(shí),往往需要對(duì)相關(guān)狀態(tài)寄存器的初始值加以關(guān)注或使用。

 

    這里以某論壇上的一個(gè)咨詢帖的一個(gè)案例具體聊聊。某STM32用戶咨詢?nèi)缦拢?/span>

    STM32F103的通用定時(shí)器,設(shè)置了TIM2的基本時(shí)基(使能了計(jì)數(shù)器溢出中斷),并沒有用CCRx,但是到了第一次及以后計(jì)數(shù)器溢出,TIM2_SR的CCxIF都被置'1'了。這是為什么呀!糾結(jié)了很久。。。。
void TIM2_IRQHandler(void)
{
    TIM2->SR=~0x0001;// TIM_ClearFlag(TIM2, TIM_FLAG_Update);//
    GPIOB->ODR^=0X0001;
}

     咨詢者使用STM32F103 的TIM2 作基本的計(jì)數(shù)定時(shí)功能,溢出中斷里做GPIO的翻轉(zhuǎn)動(dòng)作。令他糾結(jié)郁悶的是,為什么都沒使用IC/OC這些功能,SR里的CCxIF怎么會(huì)被置1了?!



    查看手冊(cè)中令咨詢者感到疑惑的CCxIF位,它是定時(shí)器x通道的捕捉或比較中斷標(biāo)志位。該位真正狀態(tài)含義取決于該通道是配置為IC還是OC。那問題來(lái)了,以通道1為例,現(xiàn)在用戶沒有配置它,那通道1在芯片復(fù)位后默認(rèn)的初始狀態(tài)到底是IC還是OC呢?

    某定時(shí)器通道是做IC還是OC,得看TIMx_CCMRn寄存器中的CCnS位。


    結(jié)合上面截圖描述,一目了然,定時(shí)器CC1通道在MCU復(fù)位后默認(rèn)為OC模式,那再回頭看SR寄存器里的初始值及相關(guān)描述。


    本來(lái),CC1IF位復(fù)位后的初始值為0,但由于咨詢者只使用基本的計(jì)數(shù)定時(shí)功能,沒有開啟CC功能,未對(duì)相關(guān)寄存器做額外的初始化,CC1通道維持默認(rèn)的OC模式,CCR1維持默認(rèn)值0;雖然CNT的值在不停的變化,但也是從0ARR間變化。當(dāng)CNT= 0時(shí),其值與CCR1的值匹配導(dǎo)致CC1IF被硬件置1也就不奇怪了。


    具體結(jié)合到本案,咨詢者主要是糾結(jié)于想搞清是怎么回事,以解心頭之郁悶。具體應(yīng)用時(shí)他可以不予理睬,不開啟相關(guān)中斷就好。


    其實(shí),我們?cè)贛CU應(yīng)用開發(fā)過程中因?yàn)楹鲆暬驘o(wú)視某些寄存器的默認(rèn)值而遇到些讓人迷惑不解的情況還很多。這里順便再提個(gè)比較常遇見的一個(gè)關(guān)于ST MCU 的UART 狀態(tài)寄存器默認(rèn)初始值的話題。


    STM32各系列的UART狀態(tài)寄存器的不同系列間在具體內(nèi)容和標(biāo)志位的清零方面還略有差異,細(xì)節(jié)請(qǐng)查看各系列參考手冊(cè)相關(guān)部分。但芯片復(fù)位后其初始值均為0x000000C0,其中的TXE/TC標(biāo)志復(fù)位后的初始值為1。在ST MCU UART應(yīng)用中有時(shí)因?yàn)楹鲆曔@兩個(gè)初始值,遇到麻煩一下子找不到原因。比方第一個(gè)數(shù)據(jù)發(fā)送失;還沒開始發(fā)送數(shù)據(jù)就沒完沒了進(jìn)UART發(fā)送中斷啊諸如此類的事情。


    從下面兩副截圖可以看出STM32F0與STM32F1在UART 的TXE標(biāo)志清零方式是有差異的。


    這里說(shuō)的都是些溫馨提示,提醒在MCU產(chǎn)品開發(fā)過程中不要完全忽視各模塊及寄存器的默認(rèn)初始值,沒啥高深莫測(cè)的東西。不是古語(yǔ)有云:天下難事做于易,天下大事做于細(xì)嘛!


    誠(chéng)然,目前ST MCU的開發(fā)生態(tài)系統(tǒng)非常強(qiáng)大和方便,尤其STM32CubeMxg工具和STM32Cube庫(kù)讓STM32 的開發(fā)變得更為簡(jiǎn)單方便,但在開發(fā)應(yīng)用中遇到問題時(shí)還是不可無(wú)視技術(shù)手冊(cè),尤其是那些細(xì)節(jié)和注意事項(xiàng)。

    很多時(shí)候產(chǎn)品開發(fā)過程中遇到的問題能否盡快解決,除了理論基礎(chǔ)外,往往還跟你內(nèi)心的淡定度、查看手冊(cè)或線路的細(xì)致度以及做事的條理性不無(wú)關(guān)系。

    寫上這些,與大家分享共勉。勿忘初始,勿忘初心,祝君好運(yùn)!


本文作者:Miler Shao
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九久久久 | 日本免费黄色一级片 | 国产欧美久久一区二区三区 | 亚洲国产成人精品久久久国产成人一区 | 人成久久| 国产免费一区二区三区免费视频 | 日日夜夜精品视频 | 成人免费一区二区三区视频网站 | www.毛片| 91大神在线资源观看无广告 | 免费a网站 | 亚洲精品在线免费看 | 久久一区 | 一区二区三区成人 | 国产精品成人一区 | 自拍视频一区二区三区 | 中文字幕在线视频免费视频 | 中文字幕在线二区 | 在线免费国产 | 久久婷婷国产 | 91精品久久久久久久久中文字幕 | 影音先锋中文字幕在线观看 | 玖玖玖在线| 亚洲国产视频一区二区 | 成人网视频 | 欧美日韩亚洲国产 | 欧美 日韩 亚洲91麻豆精品 | 亚洲a在线视频 | 日本超碰 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产精品美女久久久久aⅴ国产馆 | 午夜一级做a爰片久久毛片 精品综合 | 亚洲日韩中文字幕一区 | 国产精品不卡一区 | a视频在线 | 国产一级片91| 亚洲一视频 | 成人在线电影网站 | 免费同性女女aaa免费网站 | 91精品国产手机 | 国产精品视频观看 |