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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1922|回復: 0
打印 上一主題 下一主題
收起左側

stm32使用MDK開發中的一些常見問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:564297 發表于 2019-6-18 10:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
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,就不會出現錯誤。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品伦理一区二区三区 | 国产综合区 | 在线国产视频 | 国产精品久久久久aaaa樱花 | 亚洲性视频 | 国产精品久久久久无码av | 麻豆久久久9性大片 | 亚洲va欧美va人人爽午夜 | 紧缚调教一区二区三区视频 | 日韩欧美一区二区三区免费看 | 天堂视频中文在线 | 九色国产 | 欧美一级二级三级 | 国产一在线观看 | 久久日韩精品一区二区三区 | 日韩国产一区二区三区 | 五月综合激情在线 | 成av在线| av在线播放网址 | 久久婷婷国产 | 国产精品免费在线 | 成人在线小视频 | 成人国产精品久久久 | 久久久久久久久久久久久久av | 九九热这里只有精品在线观看 | 一区观看 | 久久精品久久综合 | 久久久蜜臀国产一区二区 | www.久久99| 国产成人一区二区三区 | 欧美精品在欧美一区二区少妇 | 波多野结衣中文视频 | 国产一区二区高清在线 | 国产精品国产精品国产专区不卡 | 欧美日韩一区二区视频在线观看 | 日本一区二区视频 | 91大神新作在线观看 | 在线欧美a | 综合一区 | 免费观看毛片 | 国产一区二区三区不卡av |