STM32模拟串口总结
发送端的方法
1.纯延时模拟 此方法延时精确度不够,或者发送前必须关中断
void IO_TXD(u8 ch)
{
u8 i = 0;
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_us(BuandRate); //延时的时间
for(i = 0; i < 8; i++)
{
if(ch&0x01)
GPIO_SetBits(GPIOB,GPIO_Pin_0);
else
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
delay_us(BuandRate);
ch = ch>>1;
}
GPIO_SetBits(GPIOB,GPIO_Pin_0);
delay_us(BuandRate);
}
//发送字符串
void USART_Send(u8 *buf, u8 len)
{
u8 t;
for(t = 0; t < len; t++)
{
IO_TXD(buf[t]);
}
}
//重写fputc函数
int fputc(int ch, FILE *f)
{
// while((UART6->ISR & 0X01)==0);
// UART6->TDR = (uint8_t)ch;
__disable_irq();**//关中断**
IO_TXD((u8)ch);
__enable_irq();**//开中断**
return ch;
}
2.利用spi的波特率线CLK和发送信号MSIO线通过DMA来模拟出发送
接收的方法:
1.外部中断法
2.外部中断+定时器法
3.单定时器法
参考以下文章
http://www.elecfans.com/d/1329755.html
同时与IIC对比为什么模拟IIC比较容易因为IIC有时钟线。