STM32模拟串口总结

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有时钟线。


版权声明:本文为yougogo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。