棋牌類網(wǎng)站設(shè)計建設(shè)合肥網(wǎng)絡(luò)推廣網(wǎng)絡(luò)運營
STM32F1系列
程序中在使用到JTAG、SWD的某個IO 時,需要禁用掉相關(guān)調(diào)試方法后,再配置相應(yīng)的IO方式。在需要相應(yīng)的接口配置前使用這些代碼。
對于F1系列,調(diào)用函數(shù)進行專門的禁止。
標準庫配置方式:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE); //使能相應(yīng)接口的時鐘,以及RCC_APB2Periph_AFIOGPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//完全禁用SWD及JTAG GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG
HAI庫配置方式:
__HAL_RCC_AFIO_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE(); //__HAL_RCC_GPIOF_CLK_ENABLE(); ///* JTAG-DP Disabled and SW-DP Disabled */__HAL_AFIO_REMAP_SWJ_DISABLE(); //完全禁用SWD及JTAG __HAL_AFIO_REMAP_SWJ_NOJTAG(); //禁用JTAG
在禁用掉相應(yīng)的接口方式后,即不能再使用這種方式下載程序了。因此會出現(xiàn)報錯:“”RAM check failed at :“”或者“NO M-Cortex”.
遇到這個狀況,需要再次下載程序,有如下三種辦法:
- 如果只禁用的JTAG,可以用SWD模式下載程序進去。
否則只能后續(xù)兩種,但總體思路都是先不讓代碼運行起來,不去禁用JTAG及SWD,這時候下載程序。
- 采用人工復(fù)位,按鈕或短接。在程序下載進行到復(fù)位的這一步,完成復(fù)位動作。
- 修改啟動模式:拉高BOOT0->重新上電->程序不能運行->下載程序-> 拉低BOOT0->重新上電->程序正常運行。
STM32F4系列
對于F4系列,系統(tǒng)上電后,所有引腳都是AF0復(fù)用,F4系統(tǒng)共支持AF0-AF15種復(fù)用。
具體到每種復(fù)用,查看數(shù)據(jù)手冊就行,比如這個:
對于F4系列,沒有專門的禁止函數(shù)了,用戶只要不是將這幾個調(diào)試引腳配置成默認的AF0復(fù)用即可。
因為系統(tǒng)上電,這幾個引腳默認是配置成AF0復(fù)用,且用于JTAG/SW調(diào)試模式。
● PA15: JTDI 處于上拉狀態(tài)
● PA14: JTCK/SWCLK 處于下拉狀態(tài)
● PA13: JTMS/SWDAT 處于下拉狀態(tài)
● PB4: NJTRST 處于上拉狀態(tài)
● PB3: JTDO 處于浮空狀態(tài)
用戶要使用這些引腳做通用IO,只要不配置復(fù)用模式即可(GPIO_Mode_AF),配置成輸入或者輸出就行
GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */
GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */
GPIO_Mode_AF = 0x02, /*!< GPIO Alternate function Mode */
GPIO_Mode_AN = 0x03 /*!< GPIO Analog Mode */
STM32L151系列
類似STM32F4系列