1. 程式人生 > >STM32埠複用

STM32埠複用

1、參考資料
      《STM32F1開發指南-庫函式版本》-4.4小節 埠複用和重對映
      《STM32中文參考手冊V10》-第8章通用和複用功能IO(GPIO和AFIO)

2、埠複用
     STM32有很多的內建外設,這些外設的外部引腳都是與GPIO複用的。
     也就是說,一個GPIO如果可以複用為內建外設的功能引腳,
     那麼當這個GPIO作為內建外設使用的時候,就叫做複用。

      例如串列埠1 的傳送接收引腳是PA9,PA10,當我們把PA9,PA10不用作GPIO,
      而用做複用功能串列埠1的傳送接收引腳的時候,叫埠複用。

3、埠複用配置過程
     埠複用配置過程
     -以PA9,PA10配置為串列埠1為例
     
GPIO埠時鐘使能。
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

複用外設時鐘使能。
     比如你要將埠PA9,PA10複用為串列埠,所以要使能串列埠時鐘。
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

埠模式配置。 GPIO_Init()函式。
    查表:
   《STM32中文參考手冊V10》P110的表格“8.1.11外設的GPIO配置”

    PA9,PA10複用為串列埠1配置過程
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//①IO時鐘使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//②外設時鐘使能

//③初始化IO為對應的模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9//複用推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空輸入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(GPIOA, &GPIO_InitStructure);