如何将STM32的调试口设置为普通IO口
STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是 开启 的。
由此我们可以知道:
如果要使用JTAG调试功能,那么PB3,PB4,PA13,PA14,PA15都不能使用;
而如果我们关闭JTAG功能,但是开启SWD调试功能,那么PB3,PB4,PA15都可以当作普通IO来使用了;
ST官方3.5的库有提供关闭调试功能的两个接口:
执行上面语句后,PB3,PB4,PA13,PA14,PA15都可以当作普通iO来使用,此时不能通过J-Link进行调试了;
执行上面语句后,PB3,PB4,PA15都可以当作普通iO来使用,且可以通过SWD进行调试。
建议程序启动时延时3-5秒后再关闭JTAG调试模式,如此,单片机断电复位后立即点击烧写按钮也是可以进行程序烧录的。
设置启动模式为ISP模式(BOOT0=1、BOOT1=0)或设置启动模式为RAM运行模式(BOOT0=1、BOOT1=1)。
将开发板断电后重新上电,此时就因不是在用户程序模式,因此就不会执行禁用JTAG的语句,JTAG功能也就可以正常使用。
设置启动模式为ISP模式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可恢复JTAG功能。
如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。直接将仿真器的模式设为SWD模,就可以不受这个禁止JTAG功能的影响了。
绛旓細璁剧疆鍚姩妯″紡涓篒SP妯″紡锛圔OOT0=1銆丅OOT1=0锛夋垨璁剧疆鍚姩妯″紡涓篟AM杩愯妯″紡锛圔OOT0=1銆丅OOT1=1锛銆 灏嗗紑鍙戞澘鏂數鍚庨噸鏂颁笂鐢碉紝姝ゆ椂灏卞洜涓嶆槸鍦ㄧ敤鎴风▼搴忔ā寮忥紝鍥犳灏变笉浼氭墽琛岀鐢↗TAG鐨勮鍙ワ紝JTAG鍔熻兘涔熷氨鍙互姝e父浣跨敤銆傝缃惎鍔ㄦā寮忎负ISP妯″紡锛圔OOT0=1銆丅OOT1=0锛夛紝鐢↖SP绋嬪簭灏哠TM32鐨凢LASH鎿﹂櫎锛...
绛旓細stm32鐨勮皟璇曟帴鍙WD瑕侀厤缃笅杞藉櫒鎵嶅彲浠ユ棦鏈変笅杞藉姛鑳藉張鏈塱o鍔熻兘銆傛瘮杈冨父鐢ㄧ殑鏄疛link涓嬭浇鍣 锛岃繖绉嶄笅杞藉櫒鏈変竴涓己鐐瑰氨鏄娇鐢ㄧ殑Jtag 20PIN鎺ュ彛锛屽お澶氱殑PIN浼氬鑷翠竴浜涘皬鍨嬬殑PCB鏉垮緢鎷ユ尋锛屼篃浼氬鍔犲竷绾跨殑闅惧害銆 鑰屼娇鐢⊿WD鎺ュ彛涓嬭浇璋冭瘯锛屽彧闇瑕佽浣跨敤4涓狿IN: GND, RST, SWDIO, SWDCLK 锛岃屼笖涓嬭浇閫熷害鍙互杈...
绛旓細鏈湴ip蹇呴』鍦ㄥ悓涓涓眬鍩熺綉鐨勫悓涓涓綉娈垫墠鑳借繘琛岃皟璇銆傚彲浠ing涓涓嬪氨琛屼簡锛屼笉鐢ㄤ粈涔堝姪鎵嬬殑銆
绛旓細棣栧厛瀹夎铏氭嫙涓插彛杞欢锛屼緥濡俈SPD锛岃櫄鎷熷嚭涓や釜涓插彛锛屽COM2鍜孋OM3锛涘叾娆★紝鍦ㄥ埄鐢∕DK浠跨湡鏃跺湪鍛戒护杈撳叆琛屼腑鍒嗗埆杈撳叆锛歮ode com4 9600,0,8,1鍙奱ssign com4<s1in>s1out锛灏唖tm32鐨涓插彛閲嶅畾鍚戯紝杈撳嚭鍒癈OM3锛涙渶鍚庯紝鐢ㄤ覆鍙h蒋浠讹紝濡傛牸瑗跨兘鐏瓑杩涜鏀跺彂璋冭瘯銆
绛旓細- Cortex M3鐨勮皟璇曟帴鍙e繀椤讳娇鐢⊿WD锛岃嚦灏戦渶瑕5绾胯繛鎺ワ細Vref, SWDIO, SWCLK, SWO, GND銆- 鍦↘eil涓‘璁よ皟璇曟ā寮忛夋嫨鐨凷WD銆侸Link璁剧疆娌℃湁浠涔堥棶棰樸傝繖绉嶈缃紝搴旇鏄紪璇戦氳繃锛岀▼搴忚兘杩愯锛屼絾鏄笉涓瀹欼TM鑳界湅鍒拌緭鍑恒係TM32寮ITM杈撳嚭锛屾湁涓涓紩鑴氬姛鑳介渶瑕佹墜宸ヨ缃紝鏈変竴涓瘎瀛樺櫒銆傛煡涓涓嬫墜鍐屽氨琛屼簡銆
绛旓細鍙氳繃璺崇嚎甯璁剧疆LPUART1鏄惁鎺ュ叆鏉胯浇ST-LINK锛堝乏渚т笣鍗癝ERIAL鐨勬帓閽堬紝1~2锛3~4閫氳繃璺崇嚎甯界煭鎺ュ嵆鍙帴鍏ワ級b. 娉ㄦ剰浜嬮」鍥犱负绔彛澶嶇敤鐨勫師鍥狅紝鍘熺悊鍥句腑瀛樺湪涓鏍瑰绾垮綊灞炲涓綉缁滅殑鎯呭喌銆備絾鍦ㄨ浆涓篜CB鏃讹紝浼氶殢鏈轰繚鐣欎竴涓綉缁溿傝繖浼氬鑷村師鐞嗗浘鍜孭CB鐨勭綉缁滄暟鐩笉鐩稿悓銆傛鎯呭喌涓嶅奖鍝嶆甯哥紪杈戝拰浣跨敤銆 浣跨敤鍓嶈鍏...
绛旓細璁剧疆鎴IO锛屽垵姝ュ垽鏂stm32 pa9绠¤剼娌℃湁闂銆傞厤鍚堜覆鍙璋冭瘯鍔╂墜锛屽鏋滄帴鍙楁病鏈夐棶棰橈紝stm32杞欢閲岄潰锛屼綘绠鍗曞啓 tx buf = rx buf 鍐嶉愭鎺掓煡涓涓嬬數璺澘銆佷覆鍙g嚎涓婇潰鏈夋病鏈変俊鍙枫
绛旓細// >>>鏄惁涔熷簲璇ヤ负USART3涔璁惧畾鍛紵RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);// 鍒濆鍖朥ART4绔彛鏃堕挓銆佸鐢ㄧ鍙CC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE); RCC_APB2Periph...
绛旓細璇风‘淇濅綘鐢佃剳涓婄殑涓插彛宸ヤ綔姝e父,娴嬭瘯鏂规硶,鎵撳紑涓涓覆鍙璋冭瘯鍔╂墜,鐭帴涓插彛绾跨殑TX鍜孯X,鐒跺悗涓插彛璋冭瘯鍔╂墜鍙戦佷竴涓瓧绗,姣斿a,濡傛灉涓插彛閫氫俊姝e父,浣犺兘鍦ㄤ覆鍙h皟璇曞姪鎵嬩腑鏀跺埌a.璇风‘淇STM32涓婄敤浜嶪SP鐨勪覆鍙f槸涓插彛1,IO鏄疨A9,PA10,濡傛灉鏄疭TM32F2XX,涔熷彲浠ユ槸涓插彛3.璇风‘淇漇TM32鍦ㄤ笂鐢垫椂涓や釜BOOT寮曡剼鐨勭數骞虫纭(...