- //========================================================================================================
- //函数名: SUSendByte()
- //参 数:
- //返 回:
- //说 明: 发送一个字节
- //========================================================================================================
- void SUSendByte(uint8_t dat)
- {
- u8 i = 0;
- u16 temp = dat;
- temp |= 0xF00; //把停止位加上
- EnableSUTXTimer(); //初始化定时器,周期为104us,不需要中断
- SU_TX_L();
- while(1)
- {
- if(0 != __HAL_TIM_GET_FLAG(&SUTXTimer, TIM_FLAG_UPDATE))//等待中断溢出
- {
- __HAL_TIM_CLEAR_FLAG(&SUTXTimer,TIM_FLAG_UPDATE); //清溢出标志
- if(temp & 0x01)
- SU_TX_H();
- else
- SU_TX_L();
- temp >>= 1;
- i++;
- if(10 <= i)
- break;
- }
- }
- SU_TX_H();
- HAL_TIM_Base_Stop(&SUTXTimer); //停止定时器
- }
|