#include "led.h" // Device header void GPIO_Configuration(void)//接口初始化 { GPIO_InitTypeDef GPIO_InitStructure;//将GPIO_Initstructure定义为InitTypeDef类型的结构体 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10 ; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//设置输出的频率为10MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//设置输出模式为浮空输出模式 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOB GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 ; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置输出的频率为10MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//设置输出模式为推挽输出模式 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIOA } void RCC_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); } void USART_Configuration(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); }
时间: 2023-06-27 19:04:46 浏览: 208
FWLIB-LED.zip_C/C++_
这段代码主要是对 STM32 的串口和 GPIO 进行初始化配置。其中,GPIO_Configuration() 函数用于配置 GPIO 的输入输出模式、频率等;RCC_Configuration() 函数用于使能 GPIO 和 USART 的时钟;USART_Configuration() 函数则用于配置 USART 的波特率、数据位数、停止位等。
具体来说,GPIO_Configuration() 函数中,GPIOA_Pin_10 被设置为浮空输入模式,GPIOA_Pin_9 被设置为推挽输出模式,这意味着输入时,该引脚的电压不稳定,需要通过外部电路稳定电压;输出时,该引脚的电压可以被直接控制,输出高低电平。
在 RCC_Configuration() 函数中,RCC_APB2PeriphClockCmd() 用于使能 GPIOA 和 AFIO 的时钟,表示允许这些模块工作;RCC_APB2PeriphClockCmd() 用于使能 USART1 的时钟,表示允许该串口通信。
在 USART_Configuration() 函数中,USART_InitTypeDef 结构体中设置了串口的一些参数,如波特率、数据位数、停止位等;USART_Cmd() 函数则用于启动 USART1,使其能够进行通信。
阅读全文