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]);
}
}
int fputc(int ch, FILE *f)
{
__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有时钟线。
|