留言稱,之前用STM32的定時(shí)器做過正交編碼應(yīng)用,一切正常。換到STM8S103K3 后,折騰若干天了計(jì)數(shù)器就是不工作。外圍硬件一樣,代碼配置流程一樣,無非代碼書寫表達(dá)上有點(diǎn)差異。他使用的是TIM1,基于庫函數(shù)寫的,配置上并無啥明顯問題。我查看8S103k3的CH1、CH2 所對(duì)應(yīng)的管腳,也無需要特別配置的地方。
考慮它對(duì)這個(gè)功能應(yīng)用很熟悉了,加上他說折騰若干天了,不怎么懷疑他硬件上的原因。我甚至有點(diǎn)擔(dān)心庫函數(shù)是否有不完善的地方,建議他依照手冊(cè)里的配置流程用操作寄存器的方法重新配置下,順便也做些檢查確認(rèn)。
后來過了一天時(shí)間,他反饋問題解決了,原因是管腳option方面的配置問題,即管腳復(fù)用重映射的問題。我明明記得8S103k3 TIM1的CH1、CH2 所對(duì)應(yīng)的管腳不存在重映射問題的,便再次跟他確認(rèn)芯片型號(hào)到底是不是8S103k3,結(jié)果他回答說是8S103f3。
哦,原來是這樣,那問題就好理解了。遺憾的是他一直都是說STM8S103F3,的確是涉及到管腳復(fù)用選項(xiàng)配置的問題。就這個(gè)問題似乎經(jīng)常有人碰到,之前我在相關(guān)文字里提到過兩三次。這里不妨以STM8S103F3的PC6 、PC7為例再聊聊。
這兩個(gè)腳默認(rèn)可以復(fù)用為SPI通訊腳,但旁邊又用中括號(hào)[]分別標(biāo)注TIM1_CH1、TIM1_CH2。這里的意思是說,如果要把這兩個(gè)腳作為TIM1_CH1、TIM1_CH2的話,還必須在option字里對(duì)進(jìn)行AFR[Alternate Function Remap]的選擇。相關(guān)的具體細(xì)節(jié)介紹在各芯片的數(shù)據(jù)手冊(cè)里。


順便看看STM8S103K3的TIM1_CH1、TIM1_CH2功能腳,分別是PC1、PC2的默認(rèn)復(fù)用腳,不需要額外作AFR的配置。

雖說折騰了若干天,其實(shí)原因很簡單。當(dāng)然了,應(yīng)該說找到了原因就簡單,沒找到原因前無所謂簡單復(fù)雜,出不來就是出不來。其實(shí),開發(fā)環(huán)節(jié)中,任何一個(gè)地方都可以把人卡住。這時(shí)候我們更需要冷靜,對(duì)問題現(xiàn)象做些梳理分析后有步驟地行動(dòng)。
如果這位工程師之前沒有用STM32做過類似項(xiàng)目,或許還不會(huì)像他說的折騰若干天。正因?yàn)榛?/span>STM32做過,對(duì)整個(gè)項(xiàng)目流程很清晰,他對(duì)這個(gè)技術(shù)點(diǎn)也相當(dāng)自信。當(dāng)在STM8S平臺(tái)上遇到麻煩時(shí),不自覺地把很多心思花在懷疑芯片上了。甚至沒花心思把芯片型號(hào)及數(shù)據(jù)手冊(cè)做些基本的了解和確認(rèn)。記得半個(gè)多月前,一個(gè)客戶因?yàn)閮尚?/span>STM8S芯片的時(shí)鐘代碼配置有問題,使得產(chǎn)品不穩(wěn)定綿延幾個(gè)月。該工程師也是過于自信,一直懷疑MCU不夠穩(wěn)定所致,而疏于做些基本的檢查和確認(rèn)【其實(shí)他代碼也沒多少行】。當(dāng)最終找到原因后,終于說了句能不懷疑MCU芯片時(shí)就先不要懷疑MCU的問題。
當(dāng)然MCU芯片有問題、有BUG也正常,但不要一遇到問題就過早的下結(jié)論是芯片的問題,這樣容易導(dǎo)致開發(fā)進(jìn)度停滯不前。正常來講,各公司的MCU往往會(huì)有相關(guān)的勘誤手冊(cè)發(fā)布出來,建議開發(fā)前就弄來掃幾眼,防患于未然。
對(duì)于ST MCU,各個(gè)系列或子系列一般也有出勘誤手冊(cè),即Errata Sheet的文件,網(wǎng)上可以自行下載。下載不到可以找代理商的FAE索取,或者在本微信公眾號(hào)里留言也行,我盡力協(xié)助。
| 歡迎光臨 (http://www.denmoz.com/bbs/) | Powered by Discuz! X3.1 |