stm32-hal库

📅 2026/6/30 5:05:57
stm32-hal库
总线结构cubemx给i2c生成了一个句柄 hi2c1uint8_tcommands[]{0x00,// oled写命令0xAE,// 关闭屏幕0x8d,0x14,//使用电荷泵0xAF,// 打开屏幕};/** * HAL_OK : 成功 * HAL_ERROR 发送出错 * HAL_BUSY i2c接口忙 * HAL_TIMEOUT 发送超时 * */HAL_I2C_Master_Transmit(hi2c1,0x78,commands,sizeof(commands)/sizeof(commands[0]),HAL_MAX_DELAY);uint8_tdataRcvd;HAL_I2C_Master_Receive(hi2c1,0x78,dataRcvd,1,HAL_MAX_DELAY);if((dataRcvd(0x016))0){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);}else{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);}USART代码/** *HAL_OK : 成功 *HAL_ERROR 失败 *HAL_BUSY 串口忙 *HAL_TIMEOUT 超时 * */uint8_tbyteNumber0x5a;char*strhello world;// int8_tHAL_UART_Transmit(huart1,byteNumber,1,HAL_MAX_DELAY);HAL_UART_Transmit(huart1,(uint8_t*)str,strlen(str),HAL_MAX_DELAY);uint8_treceive;HAL_UART_Receive(huart1,receive,1,HAL_MAX_DELAY);if(receive0){HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);}else{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);}串口中断weak表示可以被覆盖// 收5次中断这五个中断都执行完了的话会执行最终的回调函数// 中断是hal自己完成的我们只需要关注完成之后的那个函数HAL_UART_Receive_IT(huart1,receiveData,1);每次接收一个进入中断后再启动下一次的中断/** *串口中断完成进入函数 * param huart 哪一个串口句柄 */voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart){if(huarthuart1){if(receiveData1){blinkTime1000;}elseif(receiveData2){blinkTime400;}elseif(receiveData3){blinkTime200;}HAL_UART_Receive_IT(huart1,receiveData,1);}}实际寄存器影子寄存器