0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F1系列的重要寶典RM0008參考手冊(cè)

STM32單片機(jī) ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-09-19 09:27 ? 次閱讀

近日有客戶反映,他在在使用STM32F103C8T6的時(shí)候遇到如下問(wèn)題:

I2C1使用PB6和PB7口,定時(shí)器TIM3使用PB0PB1PB4PB5做4路PWM。但在使用的過(guò)程中,如果只初始化定時(shí)器就沒(méi)有任何問(wèn)題,但是一旦初始化I2C1,那么定時(shí)器的通道2(PB5)就不能產(chǎn)生PWM波,而是保持高電平。

客戶查閱手冊(cè)得知PB5的默認(rèn)復(fù)用功能是I2C1的SMBA引腳,但是它的I2C1是初始化為I2C模式的,并不是初始化為SMBAS模式,而且同樣的方式在F0上測(cè)試是可用的。它本來(lái)用的是標(biāo)準(zhǔn)庫(kù)開(kāi)發(fā)的,然后嘗試使用STM32CubeMx進(jìn)行硬件配置,使用HAL庫(kù)新建工程,還是存在同樣的問(wèn)題。

就上面的問(wèn)題,查看了其有關(guān)I2C1和TIM3d的pwm初始化的部分代碼,并未發(fā)現(xiàn)不對(duì)的地方。首先重點(diǎn)懷疑I2C1的配置是否有誤,擔(dān)心客戶在配置I2C1時(shí)配置成了SMBAS模式。借助于庫(kù)代碼,進(jìn)一步跟蹤下去查看底層的寄存器配置,相關(guān)寄存器操作也沒(méi)有發(fā)現(xiàn)問(wèn)題。

這里TIM3的PWM輸出的幾個(gè)管腳有涉及到重映射【REMAP】,從數(shù)據(jù)手冊(cè)的管腳分配上來(lái)看,如果不開(kāi)啟I2C1的SMBA模式,不應(yīng)該存在沖突問(wèn)題。

這邊再次使用STM32CubeMx基于STM32F103C8進(jìn)行同樣配置,結(jié)果跟客戶上面反饋的一樣。不開(kāi)啟I2C1時(shí),TIM3的所有管腳功能正常;開(kāi)啟I2C1后,TIM3的部分管腳PB5功能異常。感覺(jué)問(wèn)題可能出在跟TIM3的remap這個(gè)地方。打開(kāi)基于STM32F1系列的重要寶典---參考手冊(cè)RM0008,查看核對(duì)有關(guān)TIM3的管腳復(fù)用REMAP功能介紹的地方。

現(xiàn)在客戶執(zhí)行的是TIM3的部分管腳重映射功能【partial remap】,從上面表格來(lái)看,目前的代碼配置是沒(méi)有問(wèn)題的。畢竟目前如果不開(kāi)啟I2C1的話TIM3也沒(méi)什么異常,所以過(guò)來(lái)查看這個(gè)地方,心里也沒(méi)怎么期望從這里找出明顯錯(cuò)誤,倒是期待從附近能否找到些額外的提示或提醒。這不,表格的下方用了小一號(hào)文字明確提示:上述REMAP操作僅適用于64腳、100腳和144腳封裝的芯片.現(xiàn)在客戶用的芯片是STM32F103C8,管腳數(shù)為48,換言之,它是不支持TIM3的復(fù)用功能腳的REMAP操作的。到此,問(wèn)題應(yīng)該說(shuō)找到原因了。

過(guò)不了幾天,客戶又發(fā)郵件過(guò)來(lái)繼續(xù)就該問(wèn)題咨詢。他問(wèn),既然說(shuō)48腳芯片STM32F1不支持TIM3的REMAP操作,那為什么做了REMAP操作后,如果不開(kāi)啟I2C1,TIM3的4個(gè)腳的PWM功能很正常;或者說(shuō)即使同時(shí)開(kāi)啟了I2C1,PB4的功能還是正常REMAP過(guò)來(lái)了,只是PB5功能異常。希望我這邊給出進(jìn)一步解釋。

站在用戶的角度有人會(huì)發(fā)出類似疑問(wèn)很正常。其實(shí),既然手冊(cè)明確規(guī)定48腳的STM32F1芯片不支持TIM3功能腳的REMAP,它自有其原因和道理。你違背手冊(cè)之規(guī)定來(lái)操作,結(jié)果的正確性就不能得到保障。有時(shí)REMAP沒(méi)問(wèn)題,不代表任何時(shí)候進(jìn)行REMAP沒(méi)問(wèn)題。就像討論某個(gè)命題,局部、個(gè)別情形成立,并不能說(shuō)它恒成立。打個(gè)形象的比方,A今年10歲,B今年20歲。即B比A大10歲,B今年的年齡是A的2倍。顯然,兩個(gè)結(jié)論站在今年都成立,到了明年,后面的2倍論就不成立了。

在ST MCU的應(yīng)用過(guò)程中,還經(jīng)常出現(xiàn)類似違背手冊(cè)規(guī)定的操作以及由此導(dǎo)致的疑問(wèn)。比方說(shuō),有人發(fā)現(xiàn)使用STM32芯片內(nèi)部的flash時(shí),似乎可以使用到手冊(cè)規(guī)定以外的空間。用戶這樣使用,芯片的功能或特性是不能得到保障的,作為廠家只能保證芯片手冊(cè)規(guī)定區(qū)域的品質(zhì)。又比方,我們知道ST MCU絕大部分芯片都帶有UID,可有些人發(fā)些即使手冊(cè)明確沒(méi)有UID的芯片,他們似乎發(fā)現(xiàn)這類芯片還是有UID甚至加以利用,詢問(wèn)這樣是怎么回事或者說(shuō)是否可靠。同樣,對(duì)于類似情形作為廠家也只能保證手冊(cè)規(guī)定的特性。超出手冊(cè)規(guī)定以外的應(yīng)用,只能用戶自己負(fù)責(zé)。

好,繼續(xù)回到上面的話題。

我們從芯片應(yīng)用的參考手冊(cè)上應(yīng)該說(shuō)找到了明確的規(guī)定或答案。我們還可以查看下基于該芯片有無(wú)更為詳盡的勘誤表。后來(lái)在官方網(wǎng)站找到了相應(yīng)的勘誤手冊(cè)【注:勘誤手冊(cè)往往基于芯片型號(hào),即一個(gè)系列可能有多個(gè)勘誤手冊(cè)】,我們?cè)诳闭`手冊(cè)里也看到關(guān)于上面問(wèn)題的詳細(xì)描述,可應(yīng)視為對(duì)參考手冊(cè)的進(jìn)一步補(bǔ)充。

到此,問(wèn)題原因基本明了?;蛟S還會(huì)有人問(wèn),上面提到使用STM32CubeMx進(jìn)行過(guò)工程配置,配置過(guò)程并未發(fā)現(xiàn)異常,或者說(shuō)配置過(guò)程中沒(méi)有遇到上面阻礙。既然參考手冊(cè)規(guī)定不允許STM32F103C8芯片的TIM3 remap操作,在開(kāi)啟i2c1時(shí),通過(guò)cubeMx配置TIM3的REMAP功能時(shí)應(yīng)該出現(xiàn)非法提示才對(duì)???

我使用的CUBEMX的版本是4.22.0,在開(kāi)啟I2C1的同時(shí),并按照TIM3的部分REMAP配置時(shí)不能說(shuō)沒(méi)有給出提醒,只能說(shuō)提醒得不夠明確。該提醒可能容易被人忽視,然后可以一路配置下去。

STM32CubeMx配置如下圖,在I2C1那個(gè)地方有黃色警示,鼠標(biāo)放過(guò)去的時(shí)候是有文字提示的【不一定每個(gè)人會(huì)留意到】:

可以說(shuō)CubeMx還是有不夠嚴(yán)謹(jǐn)或者說(shuō)考慮不周的地方。如果在開(kāi)啟I2C1情況下,當(dāng)用戶試圖配置PB5作為輸出時(shí)直接紅色警告拒絕TIM3的remap就好了。但這樣,可能又會(huì)影響到另外一類用戶人群,他們根本不在乎PB5怎樣,只關(guān)注PB4能用作PWM輸出就好。有點(diǎn)眾口難調(diào)的味道,參考手冊(cè)在明確不支持STM32F1系列48腳的TIM3的REMAP操作的同時(shí),結(jié)合勘誤手冊(cè)做了應(yīng)用補(bǔ)充,以盡可能滿足不同的應(yīng)用需求。

畢竟STM32CubeMX工程浩大,肯定還有需要完善的地方,尤其類似的細(xì)節(jié)問(wèn)題。不過(guò),我們相信會(huì)越來(lái)越完善。不管怎樣,所以,任何時(shí)候我們不能完全將芯片手冊(cè)丟在一邊。比如,我們知道ST官方出了基于各個(gè)STM32系列的固件庫(kù),庫(kù)里各類示例工程極大方便了大家的學(xué)習(xí)和研發(fā)。不難想象,這些固件庫(kù)工程也都比較龐大,難免會(huì)有bug,一直都處于不斷完善中。在使用它們的過(guò)程中如果碰到疑惑的地方,不妨查看下相關(guān)數(shù)據(jù)手冊(cè)或開(kāi)發(fā)參考手冊(cè),做進(jìn)一步比對(duì)確認(rèn)。如果覺(jué)得手冊(cè)還描述得不夠清晰明確的話,可以去找找相應(yīng)芯片的勘誤手冊(cè),看看里面有無(wú)相關(guān)問(wèn)題的進(jìn)一步補(bǔ)充描述。

嘮叨一堆,拋磚引玉。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ST
    ST
    +關(guān)注

    關(guān)注

    32

    文章

    1133

    瀏覽量

    128934
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356001
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3248

    瀏覽量

    114796

原文標(biāo)題:淺談一個(gè)STM32外設(shè)配置沖突問(wèn)題

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32中文參考手冊(cè)_V10

    手冊(cè)STM32微控制器產(chǎn)品的技術(shù)參考手冊(cè)參照2009年12月 RM0008 Reference Manual 英文第10版, 技術(shù)參考手冊(cè)
    發(fā)表于 09-15 19:58

    STM32F105xx與STM32F107xx器件數(shù)據(jù)表和參考手冊(cè)摘要

    本文檔適用于STM32F105xx、STM32F107xx器件的部件號(hào)以及本文件所述的器件變體頁(yè),提供了有關(guān)器件數(shù)據(jù)表和參考手冊(cè) RM0008 的器件勘誤表的摘要和描述。
    發(fā)表于 11-29 08:13

    STM32F101x4/6、STM32F102x4/6、STM32F103x4/6器件勘誤表

    本文檔適用于STM32F101x4/6、STM32F102x4/6、STM32F103x4/6器件的零件編號(hào)以及本頁(yè)所述的器件變體。如本頁(yè)面所述,它給出了關(guān)于器件數(shù)據(jù)手冊(cè)
    發(fā)表于 12-01 06:51

    如何獲得STM32L1閃存/eeprom編程手冊(cè)?

    充分受益于本應(yīng)用筆記中的信息,用戶應(yīng)熟悉 STM32 微控制器系列。● STM32F1 系列參考手冊(cè)R
    發(fā)表于 02-07 07:16

    STM32F1寄存器參考手冊(cè)

    STM32F1寄存器參考手冊(cè)中文版
    發(fā)表于 10-07 07:50

    stm32f1中文參考手冊(cè)

    stm32f1中文參考手冊(cè),感興趣的小伙伴們可以看看。
    發(fā)表于 07-26 14:58 ?57次下載

    STM32F10xxx參考手冊(cè)09h

    。本手冊(cè)STM32微控制器產(chǎn)品的技術(shù)參考手冊(cè) 參照2009年12月 RM0008 Reference Manual 英文第10版 ,技術(shù)參考手冊(cè)
    發(fā)表于 12-19 14:13 ?4次下載

    STM32F1系列芯片中文參考手冊(cè)

    STM32F1系列芯片中文參考手冊(cè)(嵌入式開(kāi)發(fā)培訓(xùn)教程)-STM32F1系列芯片的中文用戶手冊(cè)
    發(fā)表于 07-30 09:32 ?218次下載
    <b class='flag-5'>STM32F1</b><b class='flag-5'>系列</b>芯片中文<b class='flag-5'>參考手冊(cè)</b>

    STM32中文參考手冊(cè)

    手冊(cè)STM32微控制器產(chǎn)品的技術(shù)參考手冊(cè),參照2009年12月 RM0008 Reference Manual 英文第10版,技術(shù)參考手冊(cè)
    發(fā)表于 02-11 15:47 ?28次下載

    STM32F10X微控制器產(chǎn)品技術(shù)參考手冊(cè)

    手冊(cè)STM32F10X微控制器產(chǎn)品的技術(shù)參考手冊(cè),參照2009年12月 RM0008 Reference Manual 英文第10版,技術(shù)參考手
    發(fā)表于 02-28 10:18 ?16次下載

    STM32F1系列單片機(jī)中文手冊(cè)

    手冊(cè)STM32微控制器產(chǎn)品的技術(shù)參考手冊(cè) 參照2009年12月 RM0008 Reference Manual 英文第10版 ,技術(shù)參考手冊(cè)
    發(fā)表于 04-13 15:20 ?194次下載

    STM32F10xxx參考手冊(cè)分享

    手冊(cè)STM32微控制器產(chǎn)品的技術(shù)參考手冊(cè) 參照2009年12月 RM0008 Reference Manual 英文第10版 ,技術(shù)參考手冊(cè)
    發(fā)表于 09-23 17:26 ?0次下載

    RM0368_STM32F401xB/C和STM32F401xD/E單片機(jī)參考手冊(cè)

    RM0368_STM32F401xB/C和STM32F401xD/E單片機(jī)參考手冊(cè)
    發(fā)表于 11-23 08:21 ?6次下載
    <b class='flag-5'>RM0368_STM32F</b>401xB/C和<b class='flag-5'>STM32F</b>401xD/E單片機(jī)<b class='flag-5'>參考手冊(cè)</b>

    RM0091_STM32F0x1/STM32F0x2/STM32F0x8單片機(jī)參考手冊(cè)

    RM0091_STM32F0x1/STM32F0x2/STM32F0x8單片機(jī)參考手冊(cè)
    發(fā)表于 11-23 08:23 ?23次下載
    <b class='flag-5'>RM0091_STM32F0x1</b>/<b class='flag-5'>STM32F</b>0x2/<b class='flag-5'>STM32F</b>0x8單片機(jī)<b class='flag-5'>參考手冊(cè)</b>

    RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx單片機(jī)參考手冊(cè)

    RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx單片機(jī)
    發(fā)表于 11-23 08:24 ?22次下載
    <b class='flag-5'>RM0008_STM32F</b>101xx,<b class='flag-5'>STM32F</b>102xx,<b class='flag-5'>STM32F</b>103xx,<b class='flag-5'>STM32F</b>105xx和<b class='flag-5'>STM32F</b>107xx單片機(jī)<b class='flag-5'>參考手冊(cè)</b>