STM32埠複用
阿新 • • 發佈:2019-02-03
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);
《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);