HAL库笔记(铁头山羊)

📅 2026/7/19 6:12:55
HAL库笔记(铁头山羊)
1.GPIOGPIO_PinState HAL_GPIO_ReadPin(GPIOx, GPIO_Pin);读取IO口电平状态举例HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) 读取PA8的电平状态HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_Pin_State);在指定IO口写入高低电平举例HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET)设置PA8引脚为高电平HAL_Delay(x);2.串口打开工程配置完USART后会生成一个USART的句柄句柄里面存放USART的一些相关的操作外设基地址USART1 寄存器起始地址串口配置参数波特率、数据位、校验位、停止位、收发模式收发缓存指针、数据长度、中断状态、DMA 状态、错误标志串口发送数据的HAL库函数一般超时时间一般填HAL_MAx_DELAY;举例uint8_t SendData 0x51;HAL_StatusTypeDef consult HAL_UART_Transmit(huart1, SendData, 1, HAL_MAX_DELAY)这里的返回值不是传递的数据而是传递过程的结果是否传递成功串口接收数据的HAL库函数举例uin8_t ReceiveData;HAL_StatusTypeDef consult HAL_UART_Receive(huart1, ReceiveData, 1, HAL_MAX_DELAY)这里的返回值不是传递的数值而是传递过程的结果是否传递成功3.I2C0.96寸OLED手册给出的命令创建工程后会生成I2C的句柄句柄实际上就是一个结构体里面定义了很多参数我们不需要全部都记住只需要知道这个句柄是一个是结构体里面含有很多参数结构体里面默认配置好很多参数我们不需要学会很多编程接口两个编程接口都会返回一个结果成功 / 失败只有返回HAL_OK才表示发送成功。举例uint8_t commands[] {0x00, 0x8d, 0x14, 0xaf, 0xa5}; //OLED开机命令HAL_StatusTypeDef result1 HAL_I2C_Master_Transmit(hi2c1, 0x78, commands, sizeof(commands)/sizeof(commands[0]), HAL_MAX_DELAY);这里定义了一个变量result1来接收传递过程是成功还是失败uint8_t dataRcvd;HAL_I2C_Master_Receive(hi2c1, 0x78, dataRcvd, 1, HAL_MAX_DELAY);4.时钟系统AHB总线是72MHzAPB1总线是36MHzAPB2总线是72MHz内部外部高速高速内部时钟HSI高速外部时钟HSE低速低速内部时钟LSI低速外部时钟LSELSI和HSI是芯片内部的振荡器不需要外接任何的元器件。因此优点就是硬件成本低但是精度不够高。HSE和LSE都需要外接都需要外界一个晶振精度高但是硬件成本高。锁相环可以倍频