日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]最近在做的一個項目中要使用SWD方式下載程序,使用的CPU是STM32F103CBT6,下載器是ULink2,固件版本為V1.40,編譯軟件是Keil uVision 4.10。硬件工程師在設計PCB板時將PB3、PB4及PA15幾個引腳用上了,而這幾個IO口是

最近在做的一個項目中要使用SWD方式下載程序,使用的CPU是STM32F103CBT6,下載器是ULink2,固件版本為V1.40,編譯軟件是Keil uVision 4.10。

硬件工程師在設計PCB板時將PB3、PB4及PA15幾個引腳用上了,而這幾個IO口是用于JTAG的,而且這幾個IO口在上電復位后默認就是使用的JTAG功能,所以我就使用重映射功能將這幾個IO口改為普通的IO口來用。

我先是寫了如下代碼:



RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//時鐘使能


GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);//禁用SWJ


IO口是正常使用了,但是當我重新用ULink下載程序時,卻提示SWD Communication Failure,我用ULink試了其他的板子,都是好的,證明ULink是沒有問題的,真是莫名其妙的問題,后來我就仔細查看GPIO_PinRemapConfig函數(shù)中幾個參數(shù)的含義,下面是庫函數(shù)中的定義和說明:


#defineGPIO_Remap_SWJ_NoJTRST((uint32_t)0x00300100)/*!

#defineGPIO_Remap_SWJ_JTAGDisable((uint32_t)0x00300200)/*!

#defineGPIO_Remap_SWJ_Disable((uint32_t)0x00300400)/*!


主要看后面兩個宏定義,GPIO_Remap_SWJ_JTAGDisable是禁止了JTAG功能,而SWD功能還是有的。

而GPIO_Remap_SWJ_Disable則是完全禁止SWJ功能,JTAG和SWD都禁止了。

后來又查看工程的Debug設置,明顯勾選了SWJ功能,而我選擇了GPIO_Remap_SWJ_Disable,則證明完全禁止了SWJ功能,會不會是因為這樣導致識別不了硬件,從而用不了SWD功能了呢?因為我設置的是一上電就開始運行軟件(從Flash啟動),很明顯,軟件運行后,就設定了SWJ不能使用。


于是,我想,能不能讓MCU上電時不運行軟件呢?就是不讓它從Flash啟動,于是我就試著將控制啟動方式的撥碼開關上的B0和B1都設置為1,重新上電,然后再在Keil的Debug選項中看是否檢測到SWD,一看,正常了,太開心了,于是改軟件,將參數(shù)改為GPIO_Remap_SWJ_JTAGDisable,只禁止JTAG功能,重新下載軟件后,將撥碼開關的B0改為0,軟件正常啟動后,斷電后再上電,然后再確認能否識別到SWD,這下完全正常了!


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉