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);1

 
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);             ="" 设置为接收模式   }12345678910111213141516<="" pre="">

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值