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

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.lryc.cn/news/2379458.html

相关文章:

  • Kotlin Multiplatform与Flutter、Compose共存:构建高效跨平台应用的完整指南
  • ElasticSearch深入解析(十二):聚合——分桶聚合、指标聚合、管道子聚合
  • spark小任务
  • Ubuntu 20.04 报错记录: Matplotlib 无法使用 OpenCV 的 libqxcb.so
  • JS 高级程序设计 设计模式
  • 新电脑软件配置二:安装python,git, pycharm
  • 数据仓库:企业数据管理的核心引擎
  • MCU开发学习记录17* - RTC学习与实践(HAL库) - 日历、闹钟、RTC备份寄存器 -STM32CubeMX
  • C++中的四种强制转换
  • YOLOv2目标检测算法:速度与精度的平衡之道
  • Quic如何实现udp可靠传输
  • 利用腾讯云MCP提升跨平台协作效率的实践与探索
  • 【Vue篇】数据秘语:从watch源码看响应式宇宙的蝴蝶效应
  • Python高级特性深度解析:从熟练到精通的跃迁之路
  • OGGMA 21c 微服务 (MySQL) 安装避坑指南
  • Linux面试题集合(4)
  • iOS Safari调试教程
  • 基于互联网和LabVIEW的多通道数据采集系统仿真设计
  • ffmpeg -vf subtitles添加字幕绝对路径问题的解决方法
  • Android Studio 安装与配置完全指南
  • 级联与端到端对话系统架构解析:以Moshi为例
  • 基于 Zookeeper 部署 Kafka 集群
  • 经典卷积神经网络
  • IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
  • 算法加训之最短路 上(dijkstra算法)
  • java连数据库
  • QT+Opencv 卡尺工具找直线
  • GraphPad Prism简介、安装与工作界面
  • 当AI自我纠错:一个简单的“Wait“提示如何让模型思考更深、推理更强
  • esp32课设记录(一)按键的短按、长按与双击