找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1299|回复: 0
收起左侧

基于485的stm32双机通信程序

[复制链接]
ID:585986 发表于 2019-7-17 20:59 | 显示全部楼层 |阅读模式
  1. #include "sys.h"
  2. #include "usart.h"               
  3. #include "delay.h"       
  4. #include "led.h"
  5. #include "beep.h"                  
  6. #include "key.h"                  
  7. #include "exti.h"                  
  8. #include "wdg.h"          
  9. #include "timer.h"                          
  10. #include "tpad.h"
  11. #include "oled.h"                          
  12. #include "lcd.h"
  13. #include "usmart.h"       
  14. #include "rtc.h"                  
  15. #include "wkup.h"       
  16. #include "adc.h"          
  17. #include "dac.h"          
  18. #include "dma.h"          
  19. #include "24cxx.h"          
  20. #include "flash.h"          
  21. #include "rs485.h"          

  22.                                         
  23. int main(void)
  24. {               
  25.         u8 key;
  26.         u8 i=0,t=0;
  27.         u8 cnt=0;
  28.         u8 rs485buf[5];
  29.         Stm32_Clock_Init(9);        //系统时钟设置
  30.         uart_init(72,9600);                 //串口初始化为9600
  31.         delay_init(72);                            //延时初始化
  32.         LED_Init();                                  //初始化与LED连接的硬件接口
  33.         LCD_Init();                                   //初始化LCD
  34.         usmart_dev.init(72);        //初始化USMART               
  35.         KEY_Init();                                //按键初始化                        
  36.         RS485_Init(36,9600);        //初始化RS485

  37.         POINT_COLOR=RED;//设置字体为红色
  38.         LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
  39.         LCD_ShowString(60,70,200,16,16,"RS485 TEST");       
  40.         LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  41.         LCD_ShowString(60,110,200,16,16,"2012/9/9");       
  42.         LCD_ShowString(60,130,200,16,16,"KEY0:Send");        //显示提示信息               

  43.         POINT_COLOR=BLUE;//设置字体为蓝色          
  44.         LCD_ShowString(60,150,200,16,16,"Count:");                        //显示当前计数值       
  45.         LCD_ShowString(60,170,200,16,16,"Send Data:");                //提示发送的数据       
  46.         LCD_ShowString(60,210,200,16,16,"Receive Data:");        //提示接收到的数据               
  47.                                                                           
  48.         while(1)
  49.         {
  50.                 key=KEY_Scan(0);
  51.                 if(key==KEY_RIGHT)//KEY0按下,发送一次数据
  52.                 {
  53.                         for(i=0;i<5;i++)
  54.                         {
  55.                                 rs485buf[i]=cnt+i;//填充发送缓冲区
  56.                                 LCD_ShowxNum(60+i*32,190,rs485buf[i],3,16,0X80);        //显示数据
  57.                         }
  58.                         RS485_Send_Data(rs485buf,5);//发送5个字节                                                                           
  59.                 }                 
  60.                 RS485_Receive_Data(rs485buf,&key);
  61.                 if(key)//接收到有数据
  62.                 {
  63.                         if(key>5)key=5;//最大是5个数据.
  64.                         for(i=0;i<key;i++)LCD_ShowxNum(60+i*32,230,rs485buf[i],3,16,0X80);        //显示数据
  65.                 }
  66.                 t++;
  67.                 delay_ms(10);
  68.                 if(t==20)
  69.                 {
  70.                         LED0=!LED0;//提示系统正在运行       
  71.                         t=0;
  72.                         cnt++;
  73.                         LCD_ShowxNum(60+48,150,cnt,3,16,0X80);        //显示数据
  74.                 }                  
  75.         }
  76. }
复制代码


实验24 485实验.zip

224.45 KB, 下载次数: 23, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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