当前位置: 首页 > web >正文

STC32G12K128实战:串口通信

       STC32G12K128芯片写一个按键通过串口1发送字符串的程序。首先,确认芯片的串口1配置。STC32G系列通常使用UART1,相关的寄存器是P_SW1来选择引脚。默认情况下,UART1的TX是P3.1。

        接下来是设置定时器作为波特率发生器。通常用定时器2,模式1,自动重载。需要计算波特率的初始值。使用11.0592MHz晶振,9600波特率的话,TH1的值是0xFD。不过STC32G可能用不同的定时器,可能需要定时器1或定时器2,需要查手册。或者使用T2作为波特率发生器,这时计算方式不同。用的是定时器1,模式2(8位自动重载)。这里可能需要确认,但为了简化,先假设使用定时器1,模式2,波特率9600。

        然后是GPIO配置。按键需要接某个IO口,比如P3.2,设置为输入模式,带上拉电阻。检测按键按下时,需要去抖动,可以用延时或软件检测多次。

        串口初始化部分,设置SCON寄存器,模式1,允许接收。同时需要启动定时器,设置TH1和TL1的值。接着是中断配置,只需发送,不需要接收中断。不需要开中断,直接查询方式发送。

        主程序中,检测按键是否按下,当检测到按键按下时,通过串口发送字符串。发送函数需要循环发送每个字符,使用TI标志位来判断是否发送完成。

        需要包含头文件,比如STC32G.H,定义相关的寄存器和位。需要注意STC32G系列的寄存器与传统的8051不同,特别是AUXR寄存器,需要配置定时器的工作模式。

        总结步骤:配置UART1,设置定时器,初始化IO,主循环检测按键,发送字符串。需要编写串口初始化函数,按键检测函数,和字符串发送函数。确保所有配置正确,并测试硬件连接是否正确,比如TX引脚是否接对,按键是否接地并通过上拉电阻。

#include "STC32G.H"#define KEY_PIN P32  // 假设按键接P3.2void UART1_Init(void) {P_SW1 &= 0x3F;    // UART1默认引脚P3.0/RxD, P3.1/TxDSCON = 0x50;     // 模式1,允许接收T2L = 0xE6;       // 11.0592MHz@115200T2H = 0xFF;       // 定时器2时钟源为sysclk/1AUXR = 0x14;      // T2作UART1波特率发生器AUXR |= 0x01;     // 启动定时器2
}void SendString(char *str) {while (*str) {SBUF = *str++;while (!TI);TI = 0;}
}void main() {P3M0 &= ~0x04; P3M1 &= ~0x04; // P3.2准双向UART1_Init();while(1) {if (KEY_PIN == 0) {       // 检测按键按下__asm__("nop");       // 消抖延时if (KEY_PIN == 0) {SendString("Hello STC32!\r\n");while(!KEY_PIN);  // 等待释放}}}
}

http://www.xdnf.cn/news/6337.html

相关文章:

  • 旗舰PCIe 5.0新宠:系统盘与副盘如何选?金士顿Kingston FURY Renegade G5 SSD深度解析与分区建议
  • 【言语】刷题4
  • 计算机过程控制干燥操作实训装置JG-SX210化工单元操作实训装置
  • archliunx关闭自动休眠
  • 【GESP真题解析】第 4 集 GESP一级 2023 年 3 月编程题 1:每月天数
  • c#队列及其操作
  • Redis缓存穿透、雪崩、击穿的解决方案?
  • WinFrom 使用 LiveCharts 实现动态折线图
  • 常用正则记录
  • 抽奖系统-奖品-活动
  • 外贸礼品禁忌
  • 【SSL证书系列】SSL证书工作原理解读
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(21):复习
  • 【测试开发知识储备】之Jacoco(Java Code Coverage)
  • SVNAdmin管理使用教程
  • Problem E: List练习
  • 力扣刷题(第二十六天)
  • 运筹说 第136期 | 其他类型对策简介之合作对策
  • BGP联邦和发射试验
  • Linux wlan 单频段 dual wifi创建
  • git中忽略文件.gitignore文件的用法
  • 2025年AI开发者在开发者占比?
  • 进阶2_1:QT5多线程与定时器共生死
  • 深度剖析火狐飞鸟 MIP 泛目录程序:技术原理与实践应用
  • .NET程序启动就报错,如何截获初期化时的问题json
  • E. 23 Kingdom【Codeforces Round 1024 (Div. 2)】
  • 1669上什么课
  • day29-IO(其他流)
  • Java基础(多线程1)
  • 鸿蒙-5.1.0-release构建编译环境