目前共有5篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:台灣正體▼
 
點擊 回復
905 4
【講解】關於普中開發板上STM32F10X的PB2~PB7埠不受控制的問題
一派掌門 二十級
1樓 發表于:2016-6-30 22:15

默認情況下,由於JTAG沒有關閉,因此PB3~4不能作為普通I/O口使用。此外,為了用串口方式下載程序,還需在STM32轉接板上插上BOOT1的跳線(綠色轉接板的左上角),這更是導致了PB2~7這六個I/O口都無法使用。
為了解決這個問題,需要在程序中手動將JTAG關閉:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 開啟AFIO時鐘
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // 禁用JTAG功能

下載程序時需要插上BOOT1跳線,下載完畢後拔掉BOOT1的跳線,然後才能正常使用PB0~7這八個I/O口。

如果還需下載程序,那麼就得再次插上跳線。。。。

一派掌門 二十級
2樓 發表于:2016-6-30 22:16
【測試程序:在PB0~7上顯示二進位加法流水燈】
#include <stm32f10x.h>
void delay(void)
{
 uint32_t i;
 for (i = 0; i < 2000000; i++);
}
int main(void)
{
 GPIO_InitTypeDef out;
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 開啟AFIO時鐘
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // 禁用JTAG功能
 
 out.GPIO_Mode = GPIO_Mode_Out_PP;
 out.GPIO_Pin = GPIO_Pin_All;
 out.GPIO_Speed = GPIO_Speed_2MHz;
 GPIO_Init(GPIOB, &out);
 
 GPIOB->ODR = 0x00;
 while (1)
 {
  GPIOB->ODR++;
  delay();
 }
}

 
一派掌門 二十級
3樓 發表于:2016-6-30 22:17
 
一派掌門 二十級
4樓 發表于:2016-6-30 22:17

這個是通過寄存器關閉JTAG的方法。

 
一派掌門 二十級
5樓 發表于:2016-6-30 22:19
不過,在實際應用中,應該儘量避免使用受影響的這六個I/O口。
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:905 回複數:4
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-6-30 22:19
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。