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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2014|回復(fù): 0
收起左側(cè)

stm32使用MDK開發(fā)中的一些常見問題

[復(fù)制鏈接]
ID:564297 發(fā)表于 2019-6-18 10:52 | 顯示全部樓層 |閱讀模式
1. 解決:keil報(bào)錯(cuò)invalid redeclaration of type name "s32"
答案:一般在Target Options C/C++選項(xiàng)卡里的Include Paths 里要添加幾個(gè)固定的頭文件路徑,

..CMSISCM3CoreSupport
..CMSISCM3DeviceSupportSTSTM32F10x
..STM32F10x_StdPeriph_Driverinc
..userinc



是頭文件路徑問題,KEIL只要有一個(gè)頭文件找不到,就會自已從本身的INC文件夾找頭文件,結(jié)果就會出現(xiàn)以上錯(cuò)提示。把老版的頭文件改為STM32F10X.H.

新的庫已經(jīng)把.CONF.MAP.TYPE都已經(jīng)去掉整合到STM32F10X.H當(dāng)中



工程中包含了老版本的頭文件,包含stm32f10x_lib.h這個(gè)文件 ,將該頭文件改為STM32F10X.H.



2.STM32_TEST.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).

此問題錯(cuò)誤提示已經(jīng)十分清楚的告訴你錯(cuò)在哪里了,Undefined symbol SystemInit ,翻譯過來就是:SystemInit 這個(gè)符號沒有定義,隨后的小括號告訴你了,是在startup_stm32f10x_md.o這個(gè)文件里面被提及的,這個(gè).o文件在工程里面并沒有,它是一個(gè)在編譯的時(shí)候根據(jù).c/.s文件生成的。所以我們只需要找到工程里面的.s或者.c即可,這里對應(yīng)這個(gè)名字的就是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
   原來在復(fù)位中斷服務(wù)函數(shù)里面,調(diào)用了SystemInit這個(gè)函數(shù),而這個(gè)函數(shù)在.s文件里面沒有定義。
    所以解決的辦法有兩個(gè)。
   1,在外部(其他任何.c文件里面)定義SystemInit這個(gè)函數(shù),哪怕是個(gè)空函數(shù)也可以。
   2,把               
                 LDR     R0, =SystemInit
                 BLX     R0
      這兩句話去掉。

(當(dāng)使用Libraries里面的startup文件時(shí),出現(xiàn)的問題。我采用的1解決辦法,順利解決問題)



3.。。HardFault_Handler的調(diào)試 最簡單的辦法:


在進(jìn)入HardFault_Handler之后,根據(jù)堆棧指針查看堆棧,找到堆棧中最新的函數(shù)返回地址,到這個(gè)地址上去加斷點(diǎn),一步步根據(jù)匯編執(zhí)行代碼。很快就能找到出錯(cuò)原因,大多數(shù)是數(shù)組溢出,或者是指針初始化的問題。

出現(xiàn)此問題,肯定是堆棧溢出和數(shù)組越界。

(有時(shí)可能是因?yàn)椤啟動文件,對stack和heap設(shè)置的太小,需要自己手動設(shè)置變大,就不會出現(xiàn)此問題。我就是將

原來的0x400和0x200增大到0x2000和0x2000)

(今天經(jīng)過高人指點(diǎn),對于此問題又找到原因:潛入式庫函數(shù)里的malloc,沒有垃圾回收機(jī)制,因?yàn)槲沂锹惚迹瑳]有

系統(tǒng)支持,所以malloc對內(nèi)存并沒有明確的機(jī)制,也就是說,他分配的內(nèi)存很可能是有問題的,造成溢出等。所以原來

。s文件默認(rèn)的堆棧大小,都很小,很容易就溢出。 現(xiàn)在只需將malloc函數(shù)申請的內(nèi)存,使用數(shù)組代替,即可。)



4.問題 "No Cortex-M Device found in JTAG chain"或“Emulator has been changed or re-enumerated!”

原因:燒錄的程序關(guān)閉了JTAg功能,復(fù)用了JTAG的接口,導(dǎo)致JTAG不能正常使用。這事,就需要使用串口下載一個(gè)

程序,此程序沒有關(guān)閉JTAG即可,然后就可以正常重新使用JTAG。



5.問題:void SystemInit(void)不能寫函數(shù),寫在這里面的函數(shù)都不反應(yīng)

原因:

6. 問題: 中斷方式接收USART,進(jìn)入中斷出不來了

解決: 配置串口時(shí),只寫USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

不打開TXE,發(fā)送中斷,即可。這樣進(jìn)入中斷,判斷FLAG,就不會出現(xiàn)錯(cuò)誤。


回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线视频a | 男女啪啪网站 | 国产精品二区一区二区aⅴ污介绍 | 黄在线免费观看 | 久久久久久久久国产 | 欧美成人激情视频 | 久草免费在线观看视频 | 国内精品在线播放 | a一级黄色片 | 在线视频日本 | 欧美成人精品一区二区三区在线看 | 久久精品99久久久久久 | 黄色片在线看 | 欧美又粗又长 | 国产精品一区二区三区免费 | 糖心vlog精品一区二区 | 日韩中文字幕视频 | 一区二区福利视频 | 成人免费视频国产免费 | 长河落日连续剧48集免费观看 | 日韩国产精品视频 | 日韩免费一区二区三区 | 亚洲国产片 | 国产精品美女久久久久av爽 | 日本不卡免费 | 成人在线免费 | 日韩小视频 | 国产精品一级二级三级 | 波多野一区| 精品毛片一区二区三区 | 亚洲性天堂 | 岛国在线视频 | 国产乱码精品一区二区三 | 美利坚合众国av | 男女久久久 | 午夜999 | 亚洲成人毛片 | 四虎在线免费观看 | av不卡在线观看 | 日本午夜视频 | a视频在线观看 |