找回密码
 立即注册
查看: 494|回复: 0

基于STC32G12K128实验箱V9.62_实验之USART2串口通信

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-05-07 08:08:50

30

主题

347

回帖

3500

积分

荣誉版主

积分
3500
发表于 2024-5-25 19:35:29 | 显示全部楼层 |阅读模式
本帖最后由 浦江一水 于 2024-5-26 12:41 编辑

基于STC32G12K128实验箱V9.62_实验之USART2串口通信



    本实验在《基于STC32G12K128实验箱V9.62_实验之数码管显示字符串基础上,参照官方Demo实验11稍作改编,增加了USART2与PC机通讯实验
  有几点说明和实验体会:
    1,实验是有关USART2串口通讯的,根据实验箱硬件的实际条件,要学会如何将引脚切换到P4.6和P4.7引脚;
    2,实验箱的USART2是一个RS232电平的串口,与PC机串口通信,要理解和清楚通讯线的硬件连接。
        实验箱的USART2DB9(母口),台式PC机的COM口是DB9(公口),硬件连接线需要一根直通线,即一头是公,另一头是母,2对2、3对3、5对5。(通常两头相同的三线制线是2与3交叉的。)
         现在笔记本都没有DB9接口,需要用USB转RS232的通讯线。
    3,实验内容之一是数码管显示模拟时钟走时,体现定时器中断动态扫描显示编程。
    4,实验内容之二是PC机与实验箱通信,返回来自PC机发送的字符串。
    5,在本实验中,学习使用库函数的方法,对官方库函数库消化理解整理积累,作为往后实战备用。
    6,利用USART2与PC机通信功能,将需要显示的信息,从串2输出,在PC机上显示,大大方便以后用实验箱在没有配显示屏的情况下,做各种实验。


主程序如下:
//********************************************************************************
// 名称: 实验8位数码管动态扫描显示 + USART2与PC机通信
// 基于: STC32G12K128 V9.62 实验箱
// 实验: STC32G工程创建/STC-USB-Link1D仿真器调试/GPIO基本输出控制/定时器x中断...
// 编程: 浦晓明(浦江一水) 2023-12-10
//********************************************************************************
#include "STC32G_SYS.H"
#include "STC32G_UART.H"
#include "LED8D.H"


/*************  本地变量及函数声明    **************/
char S[16];                     //显示字符串缓存
unsigned char hour;      //时
unsigned char minute;  //分
unsigned char second;  //秒
/********************** RTC演示函数 ***********************/

void RTC(void)
{
  if(++second >= 60)
  { second = 0;
    if(++minute >= 60)
    { minute = 0;
      if(++hour >= 24) hour = 0;
    }
  }
  sprintf(S,"%02d-%02d-%02d",hour,minute,second);  //组织字符串
  LED8D_Str(0,S);                                  //送显示段码缓存   
}
/******************** 主函数 **************************/
void main(void)
{ u16 i;
  SYS_Init();     //系统初始化
  UART2_Init(1,1,115200);  //IO切换1,模式1,波特率115200

  printf("STC32G UART2 Test Printf(x)...\r\n");        //测试printf()函数 经UART2发送一个字符串
  UART2_SendStr("UART2_SendStr(x)...OK!\r\n");    //测试字符串发送函数:UART2_SendStr()...


  LED8D_Init();           //8数码管初始化//并启动了定时器0
  hour   = 11;            //时间初始化
  minute = 59;
  second = 58;
  RTC();                     //模拟时钟运行...
  //循环...
  while(1)
  { if(SecOK)              //如果1s到达...
   { SecOK = 0;
     RTC();                  //时钟显示刷新  
   }           
    if(RX2_Cnt > 0)                         //如果USART2有接收信息...   
    { for(i=0; i<RX2_Cnt; i++)         
      UART2_SendChar(RX2_Buf);    //返回接收的信息...
      RX2_Cnt=0;                            //接收计数清零....
    }                                              //接收到的数据原样返回
  }
}

基于STC32G12K128实验箱V9.62_实验之USART2串口通信实验.rar (44.15 KB, 下载次数: 52)

回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-8 02:17 , Processed in 0.138942 second(s), 47 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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