void SoftUART_SendByte(uint8_t data) {
// 发送起始位(低电平)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
Delay_us(104); // 9600波特率下1位时间约104μs
// 发送8位数据(LSB优先)
for (int i = 0; i < 8; i++) {
if (data & 0x01) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
} else {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
}
data >>= 1;
Delay_us(104);
}
// 发送停止位(高电平)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
Delay_us(104);
} |