20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)

news/2024/5/19 13:49:22/文章来源:https://blog.csdn.net/wb4916/article/details/131541334


20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)
06第五集:C语言运算符和进制数入门上.mp4
07第五集:C语言运算符和进制数入门下.mp4
2023/7/4 19:00

下次 在【冲哥】录视频的时候 。建议在 WIN10 WIN11正式版本下录制。老用 测试版本。比尔·盖茨 看见了会有意见的!

 

ASC码表:

 


0、
https://www.stcai.com/syx
实验箱

STC32G实验箱9.6
主控芯片使用STC32G12K128,可以做示波器、波形发生器、TFT彩屏显示、OLED 12864、LCD 12864

代码下载
使用说明 STC32G12K128实验箱-V9.6使用说明书.pdf
原理图


STC32G12K128实验箱-V9.6使用说明书.pdf

例程01:

 

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            printf("Hello World!");

        }
        P40 = 0;    //三极管引脚输出低电平
        P60 = 0;    //led4引脚输出低电平
        P61 = 0;    //led5引脚输出低电平
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}


串口打印:
[17:57:30.369]发送→1
[17:57:30.384]接收←Hello World!

[17:57:30.369]发送→31 
[17:57:30.384]接收←48 65 6C 6C 6F 20 57 6F 72 6C 64 21 

 

 


例程02:

 


#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            //printf("Hello World!");
            printf("当前温度:%.2f\r\n", 11.2);

        }
        P40 = 0;    //三极管引脚输出低电平
        P60 = 0;    //led4引脚输出低电平
        P61 = 0;    //led5引脚输出低电平
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}

串口打印:
[18:06:02.284]发送→1
[18:06:02.293]接收←当前温度:11.20

[18:06:02.284]发送→31 
[18:06:02.293]接收←B5 B1 C7 B0 CE C2 B6 C8 A3 BA 31 31 2E 32 30 0D 
                    0A 

 

例程03:

 

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            //printf("Hello World!");
            //printf("当前温度:%.2f\r\n", 11.2);
            printf("当前温度:%.2f, 当前湿度:%.2f\r\n", 11.2, 55.2);

        }
        P40 = 0;    //三极管引脚输出低电平
        P60 = 0;    //led4引脚输出低电平
        P61 = 0;    //led5引脚输出低电平
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}


串口打印:
[18:21:38.277]发送→1
[18:21:38.284]接收←当前温度:11.20, 当前湿度:55.20

[18:21:38.277]发送→31 
[18:21:38.284]接收←B5 B1 C7 B0 CE C2 B6 C8 A3 BA 31 31 2E 32 30 2C 
                    20 B5 B1 C7 B0 CA AA B6 C8 A3 BA 35 35 2E 32 30 
                    0D 0A 


例程04:

 

#include "COMM/stc.h"        //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
    
//sbit P40 = P4^0;    //三极管控制引脚
//sbit P60 = P6^0;    //LED控制引脚
//sbit P61 = P6^1;    //LED控制引脚

void sys_init();    //函数声明

void main()                    //程序开始运行的入口
{
    sys_init();                //USB功能+IO口初始化
    usb_init();                //usb库初始化
    EA = 1;                    //CPU开放中断,打开总中断。
    
    while(1)        //死循环
    {
        if( DeviceState != DEVSTATE_CONFIGURED )     //
            continue;
        if( bUsbOutReady )                                
        {
            usb_OUT_done();
            //printf("%03.3f\r\n",1.12);
            //printf("%u \r\n",1<<3);
            
            //printf("Hello World!");
            //printf("当前温度:%.2f\r\n", 11.2);
            //printf("当前温度:%.2f, 当前湿度:%.2f\r\n", 11.2, 55.2);
            
            printf("%u\r\n", 53);

        }
        P40 = 0;    //三极管引脚输出低电平
        P60 = 0;    //led4引脚输出低电平
        P61 = 0;    //led5引脚输出低电平
    }
}


void sys_init()        //函数定义
{
    WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x00;   P0M0 = 0x00;   //设置为准双向口
    P1M1 = 0x00;   P1M0 = 0x00;   //设置为准双向口
    P2M1 = 0x00;   P2M0 = 0x00;   //设置为准双向口
    P3M1 = 0x00;   P3M0 = 0x00;   //设置为准双向口
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
    
    P3M0 = 0x00;
    P3M1 = 0x00;
    
    P3M0 &= ~0x03;
    P3M1 |= 0x03;

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));  //等待时钟稳定

    USBCLK = 0x00;    //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}


串口打印:
[18:30:16.453]发送→1
[18:30:16.459]接收←53


[18:30:16.453]发送→31 
[18:30:16.459]接收←35 33 0D 0A 

 

例程05:

 

 

例程06:

 

 

例程07:

 

 

例程08:

 

 


参考资料:
http://stcmcudata.com/
https://www.stcai.com/jxsp
演示视频
实验箱-STC32G12K128 教学视频
屠龙刀-STC32G12K128 教学视频


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_325853.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PSI算法极简概述

什么是隐私求交PSI 隐私求交是多方安全计算中的密码学技术&#xff0c;它允许数据持有方通过比较加密集合计算得到交集&#xff0c;且任何一方都不会获得其他信息。PSI还存在一种变体&#xff0c;即CS场景。客户端可以获取其与服务器的交集但是服务器无法学习到该集合。如果在…

netty学习(2):多个客户端与服务器通信

1. 基于前面一节netty学习&#xff08;1&#xff09;:1个客户端与服务器通信 只需要把服务器的handler改造一下即可&#xff0c;通过ChannelGroup 找到所有的客户端channel&#xff0c;发送消息即可。 package server;import io.netty.channel.*; import io.netty.channel.gr…

Android Studio实现内容丰富的安卓汽车租赁平台

如需源码可以添加q-------3290510686&#xff0c;也有演示视频演示具体功能&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动。 项目编号101 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查…

登录校验-Filter/过滤器

过滤器 概念&#xff1a;Filter过滤器&#xff0c;是javaweb的三大组件&#xff08;servlet,Filter,Listener&#xff09;之一 作用&#xff1a;可以把对资源的请求拦截下来&#xff0c;从而实现一些特殊的功能 过滤器的常见操作&#xff1a;登录校验&#xff0c;统一编码&…

Word公式大括号左对齐

1、大括号公式如下&#xff1a; 2、依次选中每一行&#xff0c;然后在开头输入一个&&#xff0c;然后回车&#xff1a; 3、当最后一行输入完立马可以发现左对齐了&#xff1a; The higher I got, the more amazed I was by the view.

win下实现Linux的tab自动补全

声明 &#xff1a;如果不是确定的话 注册表这个东西不建议更改 如果更改的话建议先备份系统 以防意外 1.找到注册表编辑器 2. 展开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor 3.找到Completion Char 双击 把橙色的数值改成9 4.重新打开cmd 就可以了 参考文章…

github上传超过100M的大文件

当上传的工程中有超过100M的文件时&#xff0c;直接上传github会产生如下报错&#xff1a; remote: error: File retinaface-R50/R50-0000.params is 112.54 MB; this exceeds GitHubs file size limit of 100.00 MB! [remote rejected] master -> master (pre-receive ho…

vue打包到生产环境

1.进入到项目根目录执行 npm run build此时会自动打包在dist目录下 2.安装服务 npm install -g serve3.启动 serve dist以上是生产环境打包的过程。 npm run dev 是开发环境, npm run build 是生产环境

微软发布「升级版」多模态大模型 Kosmos-2!新增局部理解能力,解锁实体级交互

夕小瑶科技说 原创 作者 | 小戏、ZenMoore 三个多月前&#xff0c;微软亚洲研究院在论文《Language Is Not All You Need: Aligning Perception with Language Models》中发布了一个强大的多模态大模型 Kosmos-1&#xff0c;成功将感知与语言对齐&#xff0c;在 ChatGPT 的多…

银河麒麟服务器v10 sp1 安装mysql

可以先用 dpkg --list|grep mysql 查看自己的mysql有哪些依赖&#xff1a; 上图已经是安装后的截图&#xff0c;然后再卸载 sudo apt-get autoremove --purge mysql-common 本文在没有安装之前&#xff0c;只有mysql-common包&#xff0c;再用dpkg --list|grep mysql查看&…

HTML5开发工程师岗位的职责说明文(合集)

HTML5开发工程师岗位的职责说明文1 职责&#xff1a; 1、根据产品设计文档和视觉文件&#xff0c;利用HTML5&#xff0c;Javascript相关技术实现web端的界面效果、交互和功能; 2、基于HTML5.0的标准进行页面制作&#xff0c;编写可复用的用户界面组件; 3、负责分析和解决前端…

【Java从入门到大牛】Java快速入门

目录 简单认识JavaJava背景知识Java能做什么Java技术体系 如何使用Java搭建Java开发环境总结 开发第一个Java程序开发过程HelloWorld案例常见错误总结 Java程序的执行原理总结 JDK的组成和跨平台原理JDK的组成Java的跨平台、工作原理总结 JDK安装后设置Path和Java_home环境变量…

【服务器】群辉 NAS 安装 Mysql 远程访问连接

群辉安装MySQL具有高效、安全、可靠、灵活等优势&#xff0c;可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性&#xff0c;可以保障MySQL数据库的高效运行和数据安全. cpolar 是一款内网穿透工具,通过简单的设置,我们即可实现远程访问群辉中mysq…

FPGA实验二:模可变计数器设计

目录 一、实验目的 二、实验要求 三、实验代码 1.实验源码 2.部分代码设计思路分析 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 3、下载测试结果及分析 五、实验心得 1.解决实验中遇到的困难及解决 2.完成实验后的心得 一、实验目的 &#xff08;1&#xf…

暑期学JavaScript【第四天】

日期对象 创建 //创建 const date new Date(); // 默认使用现在时间常用方法 时间戳的获取方式 date.getTime()new Date()Date.now() 倒计时案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta htt…

Java中规模软件开发实训——掌握财务自由的关键!解锁智能家庭记账系统的神奇力量!(家庭记账软件)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;html css js&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;财务自由&am…

简洁清新后台模板推荐(光年)

目录 前言一、后台模板介绍1.作者介绍2.模板介绍 二、界面展示1.登录2.首页3.UI元素4.表单5.工具类6.示例页面7.主题选择 三、入口总结 前言 作为后端开发人员&#xff0c;前端技术确实不精通&#xff0c;也没有太多的精力搞前端。所以一直在搜寻一些现成的模板。最近发现一个…

nginx开启http2导致的服务验证码不可用问题

问题描述: 新搭建了一套开源的系统。通过nginx做了https反向代理后无法显示验证码。 具体报错&#xff1a; Uncaught TypeError: Cannot read properties of null (reading ‘property’) 点击报错后跳转到方法&#xff1a; xhr.getAllResponseHeaders() 问题就出在这个方法&…

TOT(Tree of Thought) | GPT-4+dfs搜索算法提升大模型复杂问题解决能力

大家好&#xff0c;我是HxShine。 今天分享一篇普林斯顿大学的一篇文章&#xff0c;Tree of Thoughts: Deliberate Problem Solving with Large Language Models[1]&#xff1a;思维之树:用大型语言模型解决复杂问题。 这篇工作还是非常有借鉴意义的&#xff0c;OpenAI的Andr…

ESP32(MicroPython) LVGL Socket通信收发消息

本程序实现了通过Socket通信收发消息。程序开始时顶部会显示connecting...&#xff0c;连接路由器后显示connected并展开键盘。接收的消息会显示在屏幕顶部&#xff0c;发送消息通过键盘输入并按回车。实际测试时&#xff0c;可能由于实时性问题&#xff0c;接收消息失败率较高…