STM32学习笔记:adc采样得到的电压值用485发送给pc

采用adc1的通道10,将采集到的电压值用485发送给PC显示,
先上原理图,
这里写图片描述
这里写图片描述
源代码见附件,
这里想说的是几个要注意的问题:
1,ad输入的电压经过了R42和R44进行分压,所以pc显示的电压值将会减半,
2、采用这个函数进行发送数据的时候,每次都是发送一个8位的数据(即一个字节),也就是最大值为256,。超过1个字节默认发送地位,即你要发送的数据位0x0145,只会发送45,具体可以参考数据手册,下图,

USART_SendData(USART3,ADC_Value_B);

这里写图片描述
3,pc 机上收集到的数据,如果没有勾选“以HEX显示”则显示的是acsii码,而我们发送数据给PC机发送的则是hex,所以这里要进行一次转换。HEX–>ascii
4、控制485的发送和接收的引脚是TR485-U3–>PB12, 通过光耦隔离芯片,接到了485的RE’和DE上,由光耦可知,PB12=1,光耦中的1,2脚不导通,没有光发射到3,4引脚,RE’/DE输出为低电压,也就是RE’有效,接收数据。反之,PB12 = 0,发送数据。

//RS485发送len个字节.
//buf:发送区首地址
//len:发送的字节数(为了和本代码的接收匹配,这里建议不要超过64个字节)
void RS485_Send_Data(u8 *buf,u8 len)
{
    u8 t;
    RS485_TX_EN(0);         //设置为发送模式
    for(t=0;t<len;t++)      //循环发送数据
    {           
        USART_SendData(USART3,buf[t]);     
        while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);//等待发送完成,标志位置1.
    }    

    while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET); //USART_FLAG_TC为发送完成标志位。如果使能了TC这个为的中断就会产生中断。置1; 
    RS485_TX_EN(1);             //设置为接收模式   
}

附件:
http://download.csdn.net/detail/qq_33559992/9581825

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值