野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9447|回复: 5

PC机如何通过485与板子进行通信的小问题

[复制链接]
发表于 2016-11-27 00:31:21 | 显示全部楼层 |阅读模式
之前测试过采用轮询方式,PC机通过485与板子的通信程序,可以完美实现。

现在想如何通过接收中断方式进行,参考了火哥例程 USART—485通信 的代码。
在bsp_485.c文件中,定义了中断接收函数,通过中断的方式将接收的数据存在数组uart_buff


请问,现在我如何在main函数里,调用数组uart_buff,通过RS485_SendString函数向主机输出数据呢?
附上火哥源程序




中断接收函数.png

USART—485通信.zip

322.04 KB, 下载次数: 27

回复

使用道具 举报

 楼主| 发表于 2016-11-27 00:37:21 | 显示全部楼层
再解释一下问题,我已经通过接收中断,将接收到的数据存到了 uart_buff 数组里,请问我如何在main函数里将接收的数组全部向主机输出呢?PS: 已经存在了字符串发送函数了

虽然感觉很简单,就是半天实现不了。

还请各位不吝赐教,十分感谢。
回复 支持 反对

使用道具 举报

发表于 2016-11-27 10:52:07 | 显示全部楼层
定义uart_buff这个数组的时候是在bsp_485.c这个文件中的,在main.c中使用这个数组变量,我记得好像是要加上一个extern吧,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 11:20:23 | 显示全部楼层
xdh873939316 发表于 2016-11-27 10:52
定义uart_buff这个数组的时候是在bsp_485.c这个文件中的,在main.c中使用这个数组变量,我记得好像是要加上 ...

感谢你的回答。我已经在main函数里声明了 extern uint8_t uart_buff[],然后在while循环里调用了火哥的字符串发送函数 RS485_SendString,放到板子上跑还是没有反应。485串口初始化的时候已经默认设置为接收模式。
  1. extern uint8_t uart_buff[]; RS485_SendString
  2. static void Delay(__IO u32 nCount);

  3. /**
  4.   * @brief  主函数
  5.   * @param  无
  6.   * @retval 无
  7.   */
  8. int main(void)
  9. {

  10.         char *pbuf;
  11.         uint16_t len;
  12.        
  13.         LED_GPIO_Config();       
  14.        
  15.   /*初始化USART1*/
  16.   Debug_USART_Config();
  17.        
  18.         /*初始化485使用的串口,使用中断模式接收*/
  19.         RS485_Config();
  20.        
  21.         while(1)
  22.         {
  23.                 RS485_SendString(uart_buff);
  24.         }
  25. }
复制代码

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-27 11:20:49 | 显示全部楼层
附上火哥字符串发送函数:
  1. void RS485_SendString(  uint8_t *str)
  2. {
  3.         unsigned int k=0;
  4.        
  5.         RS485_TX_EN()        ;//        使能发送数据
  6.        
  7.     do
  8.     {
  9.         RS485_SendByte(  *(str + k) );
  10.         k++;
  11.     } while(*(str + k)!='\0');
  12.        
  13.         /*加短暂延时,保证485发送数据完毕*/
  14.         Delay(0xFFF);
  15.                
  16.         RS485_RX_EN()        ;//        使能接收数据
  17. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-11-27 11:42:11 | 显示全部楼层
额,可能是我回答的有问题抱歉,extern真正的用法是:在bsp_485.h这个头文件中申明,extern uint8_t uart_buff[];其他地方你你只需要调用就行了,不用在加一次。具体的你可以看看这个。 实验25 485实验.rar (2.54 MB, 下载次数: 38)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 11:42 , Processed in 0.053934 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表