1. 解決:keil報錯invalid redeclaration of type name "s32"
答案:一般在Target Options C/C++選項卡里的Include Paths 里要添加幾個固定的頭文件路徑,
..CMSISCM3CoreSupport
..CMSISCM3DeviceSupportSTSTM32F10x
..STM32F10x_StdPeriph_Driverinc
..userinc
是頭文件路徑問題,KEIL只要有一個頭文件找不到,就會自已從本身的INC文件夾找頭文件,結果就會出現以上錯提示。把老版的頭文件改為STM32F10X.H.
新的庫已經把.CONF.MAP.TYPE都已經去掉整合到STM32F10X.H當中
工程中包含了老版本的頭文件,包含stm32f10x_lib.h這個文件 ,將該頭文件改為STM32F10X.H.
2.STM32_TEST.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).
此問題錯誤提示已經十分清楚的告訴你錯在哪里了,Undefined symbol SystemInit ,翻譯過來就是:SystemInit 這個符號沒有定義,隨后的小括號告訴你了,是在startup_stm32f10x_md.o這個文件里面被提及的,這個.o文件在工程里面并沒有,它是一個在編譯的時候根據.c/.s文件生成的。所以我們只需要找到工程里面的.s或者.c即可,這里對應這個名字的就是startup_stm32f10x_md.s了。
在此文件里面可以找到SystemInit的所在:
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
原來在復位中斷服務函數里面,調用了SystemInit這個函數,而這個函數在.s文件里面沒有定義。
所以解決的辦法有兩個。
1,在外部(其他任何.c文件里面)定義SystemInit這個函數,哪怕是個空函數也可以。
2,把
LDR R0, =SystemInit
BLX R0
這兩句話去掉。
(當使用Libraries里面的startup文件時,出現的問題。我采用的1解決辦法,順利解決問題)
3.。。HardFault_Handler的調試 最簡單的辦法:
在進入HardFault_Handler之后,根據堆棧指針查看堆棧,找到堆棧中最新的函數返回地址,到這個地址上去加斷點,一步步根據匯編執行代碼。很快就能找到出錯原因,大多數是數組溢出,或者是指針初始化的問題。
出現此問題,肯定是堆棧溢出和數組越界。
(有時可能是因為。s啟動文件,對stack和heap設置的太小,需要自己手動設置變大,就不會出現此問題。我就是將
原來的0x400和0x200增大到0x2000和0x2000)
(今天經過高人指點,對于此問題又找到原因:潛入式庫函數里的malloc,沒有垃圾回收機制,因為我是裸奔,沒有
系統支持,所以malloc對內存并沒有明確的機制,也就是說,他分配的內存很可能是有問題的,造成溢出等。所以原來
。s文件默認的堆棧大小,都很小,很容易就溢出。 現在只需將malloc函數申請的內存,使用數組代替,即可。)
4.問題 "No Cortex-M Device found in JTAG chain"或“Emulator has been changed or re-enumerated!”
原因:燒錄的程序關閉了JTAg功能,復用了JTAG的接口,導致JTAG不能正常使用。這事,就需要使用串口下載一個
程序,此程序沒有關閉JTAG即可,然后就可以正常重新使用JTAG。
5.問題:void SystemInit(void)不能寫函數,寫在這里面的函數都不反應
原因:
6. 問題: 中斷方式接收USART,進入中斷出不來了
解決: 配置串口時,只寫USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
不打開TXE,發送中斷,即可。這樣進入中斷,判斷FLAG,就不會出現錯誤。
上一篇:使用STM32控制無源蜂鳴器發聲播放音樂(STM32_07)
下一篇:關于STM32的CPU的使用率~裸機不帶系統
推薦閱讀
史海拾趣
盡管Crystek公司在發展過程中取得了顯著的成就,但也面臨著一些挑戰和困難。例如,隨著行業競爭的加劇和市場需求的不斷變化,公司需要不斷調整戰略方向和產品結構以適應市場的變化。同時,公司還需要加強人才培養和團隊建設,提升員工的技能水平和創新能力。然而,Crystek公司始終保持著積極進取的態度和勇于面對挑戰的精神,相信在未來的發展中,公司將繼續保持領先地位并創造更加輝煌的業績。
這五個故事展示了Crystek公司在電子行業中的發展歷程和取得的成就。從創業起步到技術創新、市場拓展、部門專業化以及應對挑戰和未來發展,Crystek公司始終保持著積極進取的精神和不斷創新的態度,為電子行業的發展做出了重要貢獻。
隨著產品質量的不斷提升和技術的不斷創新,RF Labs開始積極拓展市場。他們不僅在國內市場上取得了良好的銷售業績,還成功進入了國際市場。RF Labs與多家國際知名電子企業建立了合作關系,共同研發新產品、開拓新市場。這些合作不僅為RF Labs帶來了更多的商業機會,也進一步提升了公司的國際影響力。
D公司始終堅持品質至上的經營理念,以提供高品質的電子產品為己任。在CIF交易模式下,D公司嚴格控制產品質量,從原材料采購到生產流程中的每一個環節都進行嚴格把關。憑借出色的產品質量和良好的售后服務,D公司贏得了客戶的信任和好評。
C公司是一家專注于電子產品貿易的CIF公司。為了降低成本、提高效率,C公司積極整合全球供應鏈資源,與多家優質的電子產品生產商建立了長期合作關系。通過優化采購、生產和物流等環節,C公司成功降低了運營成本,提高了市場競爭力。
1. 盡量增加平行線段的距離(S),至少大于3H,H指信號走線到參考平面的距離。通俗的說就是繞大彎走線,只要S足夠大,就幾乎能完全避免相互的耦合效應。 2. 減小耦合長度Lp,當兩倍的Lp延時接近或超過信號上升時間時,產生的串擾將達到飽 ...… 查看全部問答∨ |
|
目前市場銷售FPGA開發板的廠商很多,但大多只提供些簡單的代碼,沒有詳盡的文檔和教程提供給初學者。經驗表明,很多學生在學習FPGA設計技術的過程中,雖然剛開始學習熱情很高,但真正堅持下來一直到“學會”的卻寥寥無幾,除了學生個人毅力的因素外 ...… 查看全部問答∨ |
DF100A型短波發射機的諧波濾波器是發射機的重要組成部分.對DF100A型短波發射機射頻電路的組成作了簡單介紹,重點討論了發射機諧波濾波器的功能、作用及工作原理.… 查看全部問答∨ |
電路是verilogA編寫的理想14bitADC接理想14bitDAC的電路,clk頻率50MHz,輸入的sin源頻率8.337402MHz。仿真時間3us,可以得到正確的波形;仿真時間125us時,初始幾十微秒的波形都是直線;仿真精度設過moderate、conservative,也自己設過step/maxst ...… 查看全部問答∨ |
|