STC的USB转串口具备卷死一众友商的实力(1)优点
2024-4-11 14:16 来自 纯今 发布@ 综合讨论
STC的USB转串口具备卷死一众友商的实力(2)如何下手?
STC的USB转串口具备卷死一众友商的实力(2)如何下手? - 综合讨论 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
CH340(USB转串口)和CH341(编程器)
与国际同类产品如FT232RL和CP2102相比,
CH340最显著的不足在于其在Windows系统中需要手动安装驱动,
而竞品则具备“即插即用”(Plug and Play, PnP)的特性。
值得一提的是,STC的USB转串口在Windows 10系统中实现了“即插即用”,
显示出其在这一领域与国际先进水平的接轨。
在不通讯时,STC的USB转串口对RX和TX引脚的浮空电平控制表现得比CH
STC的USB转串口具备卷死一众友商的实力(2)如何下手? - 综合讨论 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
CH340(USB转串口)和CH341(编程器)
与国际同类产品如FT232RL和CP2102相比,
CH340最显著的不足在于其在Windows系统中需要手动安装驱动,
而竞品则具备“即插即用”(Plug and Play, PnP)的特性。
值得一提的是,STC的USB转串口在Windows 10系统中实现了“即插即用”,
显示出其在这一领域与国际先进水平的接轨。
在不通讯时,STC的USB转串口对RX和TX引脚的浮空电平控制表现得比CH
STC32G屠龙刀板子,地址越界问题
2024-4-11 11:58 来自 大雨 发布@ 综合讨论
正在学习STC32G,地址越界,应该办?
当结构体内数组超过12,编译提示越界
#define ASS_MAX 12
struct Product products = {
xxxx,yy
//更多
},
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: EDATA
SEGMENT: ?STACK
LENGTH: 000100H
当结构体内数组超过12,编译提示越界
#define ASS_MAX 12
struct Product products = {
xxxx,yy
//更多
},
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: EDATA
SEGMENT: ?STACK
LENGTH: 000100H
使用STC32库 PWM2互补没电平输出
2024-4-11 10:36 来自 newcanking 发布@ 综合讨论
使用STC32库函数,P2.2,P2.3脚使用互补输出时配置,按例程配置,发现引脚没电平输出一直为低电平,但分别配配为PWM8,PWM7就可以正常输出不知什么问题呢
遇到一个串口2和串口1互相影响的问题【已解决】
2024-4-11 09:46 来自 Dwyer 发布@ 综合讨论
本帖最后由 STCAI-32位8051 于 2024-4-12 14:36 编辑
我使用的单片机是STC8H1K08
内存编译后情况如下
Program Size: data=9.2 xdata=606 const=0 code=6498
我的代码基本功能就是接受串口2的数据,然后进行和校验,校验通过后通过串口1输出数据
代码如下
u8 Co2Analysis(void)
{
u8 i,check;
u16 CO2_PPM;
if(COM2.RX_TimeOut > 0) //超时计数
{
if(--COM2.RX_TimeOut == 0)
{
if(COM2.RX_Cnt > 0)
{
check = FunCheckSum(RX2_Buffer,9); //收到的数据进行校验
我使用的单片机是STC8H1K08
内存编译后情况如下
Program Size: data=9.2 xdata=606 const=0 code=6498
我的代码基本功能就是接受串口2的数据,然后进行和校验,校验通过后通过串口1输出数据
代码如下
u8 Co2Analysis(void)
{
u8 i,check;
u16 CO2_PPM;
if(COM2.RX_TimeOut > 0) //超时计数
{
if(--COM2.RX_TimeOut == 0)
{
if(COM2.RX_Cnt > 0)
{
check = FunCheckSum(RX2_Buffer,9); //收到的数据进行校验
大佬们来看一下,w25q64数据读取全是ff,应该是没写入不进去,程序在下面各位看下
2024-4-10 00:24 来自 dengxs 发布@ 综合讨论
#include "w25q128.h"
/************************************************************************/
void SPI_init(void)
{
SPI_CE_High();
CLK_FLASH = 0; // set clock to low initial state
DI_FLASH = 1;
}
/************************************************************************/
void SPI_WriteByte(u8 out)
{
u8 i;
i = 8;
do{
out <<= 1;
DI_FLASH = CY;
CLK_FLASH = 1;
CLK_FLASH = 0;
}while(--i);
DI_FLASH = 1;
}
/************************************************************************/
void SPI_init(void)
{
SPI_CE_High();
CLK_FLASH = 0; // set clock to low initial state
DI_FLASH = 1;
}
/************************************************************************/
void SPI_WriteByte(u8 out)
{
u8 i;
i = 8;
do{
out <<= 1;
DI_FLASH = CY;
CLK_FLASH = 1;
CLK_FLASH = 0;
}while(--i);
DI_FLASH = 1;
}
开天斧程序运行问题
2024-4-9 20:47 来自 zhang32568 发布@ 综合讨论
出现一个很奇怪的问题。开天斧不断电下载程序。插在笔记本或者台式机U口上一切正常。程序运行正常。但是如果单独用5V供电。比如用一个充电头。程序就不运行了。单片机不启动。
难道是不断电下载程序引起的问题?还没有删除不断电下载程序。
大家有没有遇到过?
难道是不断电下载程序引起的问题?还没有删除不断电下载程序。
大家有没有遇到过?
求助贴:STC15无法与STC-ISP软件连接,无法检测到芯片【已解决】
2024-4-9 17:38 来自 haishi28 发布@ 综合讨论
本帖最后由 STCAI-32位8051 于 2024-4-11 17:24 编辑
回忆之前的操作,是把STC-ISP中的例程hex文件直接烧写进入芯片,但不确定是否选中下列设置:
40894
目前的症状就是STC-ISP软件无法检测到芯片。
我测量了芯片的供电,3.8V,应该是正常范围。
问题1:是不是我的上述操作导致的?
问题2:如何解决呢?这片芯片就废了吗?
回忆之前的操作,是把STC-ISP中的例程hex文件直接烧写进入芯片,但不确定是否选中下列设置:
40894
目前的症状就是STC-ISP软件无法检测到芯片。
我测量了芯片的供电,3.8V,应该是正常范围。
问题1:是不是我的上述操作导致的?
问题2:如何解决呢?这片芯片就废了吗?
我想问一下在定时器里使用16位变量,计数变慢什么原因,8位正常 | 已解决
2024-4-9 14:00 来自 stc8h用户 发布@ 综合讨论
我想问一下在定时器里使用16位变量,计数变慢什么原因,8位正常
串口通过上位机发数据通信正常,再由单片机发数据上位机接收数据不正常。
2024-4-9 09:23 来自 17141200320 发布@ 综合讨论
本帖最后由 17141200320 于 2024-4-9 11:05 编辑
1、 串口通过上位机发数据,通信正常, 上位机发送1,接收也是1.
40838
2、再由单片机发数据给上位机,接收数据不正常。 发送1,接收出现汉字。
请教下各位老师,是什么问题造成接收数据不正常。
40839
3多次复位上电山,上位机显示状态
40840
4、HEX模式显示
40854
5、程序
40841
40842
40843
1、 串口通过上位机发数据,通信正常, 上位机发送1,接收也是1.
40838
2、再由单片机发数据给上位机,接收数据不正常。 发送1,接收出现汉字。
请教下各位老师,是什么问题造成接收数据不正常。
40839
3多次复位上电山,上位机显示状态
40840
4、HEX模式显示
40854
5、程序
40841
40842
40843
用32F12K54做了个数字界面卡
2024-4-7 23:27 来自 DebugLab 发布@ 综合讨论
40725
看市面上的数字界面大多是这个规格的,正好有个Combo 384,抄一下PCB外形和排针位置,改成STC32F12K54的了
40728
Amanero Combo 384和ES9038Q2M
40726
接ES9023能响,没问题,之前用追风剑也试过的
40732
准备把之前和Combo 384配套用的ES9038Q2M接上看看行不行
40731
结果发现接上不响,但是Combo 384接ES9038Q2M和ES9023都能响
40730
测信号是没有问题的,和某热心网友讨论,我这个ES9038Q2M的MCLK是100M晶振,异步的,他说BCLK是32倍LRCK太低了,一般是64倍LRCK,48000*32=1536000,1.536MHz,32bit 48KHz下BCLK应该是3.072MHz
40727
UAC
看市面上的数字界面大多是这个规格的,正好有个Combo 384,抄一下PCB外形和排针位置,改成STC32F12K54的了
40728
Amanero Combo 384和ES9038Q2M
40726
接ES9023能响,没问题,之前用追风剑也试过的
40732
准备把之前和Combo 384配套用的ES9038Q2M接上看看行不行
40731
结果发现接上不响,但是Combo 384接ES9038Q2M和ES9023都能响
40730
测信号是没有问题的,和某热心网友讨论,我这个ES9038Q2M的MCLK是100M晶振,异步的,他说BCLK是32倍LRCK太低了,一般是64倍LRCK,48000*32=1536000,1.536MHz,32bit 48KHz下BCLK应该是3.072MHz
40727
UAC
[新手求助]在用试验箱CDC时,串口没有打印,并且提示'信号灯超时时间已到'
2024-4-7 23:23 来自 nmszt55 发布@ 综合讨论
刚学没几天,今天准备用试验箱写个CDC打印代码,如下:
main.c
40738
init.c
40737
但是用ISP下载程序后,点击发送数据,并没有收到返回的打印
40739
而且过一阵之后点击发送,会出现 信号灯超时时间已到 的报错
40740
谁知道这是咋回事啊
main.c
40738
init.c
40737
但是用ISP下载程序后,点击发送数据,并没有收到返回的打印
40739
而且过一阵之后点击发送,会出现 信号灯超时时间已到 的报错
40740
谁知道这是咋回事啊
用单片机控制伺服电机实现简单的启停
2024-4-7 17:35 来自 qepuemc 发布@ 综合讨论
已知用p WM控制伺服电机。
在启停的时候需要低频运行中需要高频。
用pwmb 22118400不分频。周期为5000左右。占空比设置为2500。这个时候的。这个时候频率大约是4k满足伺服电机的控制环境。
一开始以为是。5000的周期是一秒。也就是这个数设置的越大不超过65535。频率就会越高。
现在看来不是这样的。现在的认知应该是5000是一个定时周期。在5000分度值之内设置占空比。
一开始实际设置的5万。现在看来设置5000更为合理。设置这个主要为了ao输出。0-25ma。设置个5000已经不错了。这样一来频率就可以到4000左右。然后用pwm5和6。去输出ao。也能正常使用。用pwm7。和pwm8。大约4k频率去驱动伺服电机就可以了。根据不同的占空比,应该就可以实现启停是降速。控制方设置在20毫秒的任务周期里。 暂时就是这个想法还没有实际实践。还请懂的人评价一下这样对不对?谢谢🙏
在启停的时候需要低频运行中需要高频。
用pwmb 22118400不分频。周期为5000左右。占空比设置为2500。这个时候的。这个时候频率大约是4k满足伺服电机的控制环境。
一开始以为是。5000的周期是一秒。也就是这个数设置的越大不超过65535。频率就会越高。
现在看来不是这样的。现在的认知应该是5000是一个定时周期。在5000分度值之内设置占空比。
一开始实际设置的5万。现在看来设置5000更为合理。设置这个主要为了ao输出。0-25ma。设置个5000已经不错了。这样一来频率就可以到4000左右。然后用pwm5和6。去输出ao。也能正常使用。用pwm7。和pwm8。大约4k频率去驱动伺服电机就可以了。根据不同的占空比,应该就可以实现启停是降速。控制方设置在20毫秒的任务周期里。 暂时就是这个想法还没有实际实践。还请懂的人评价一下这样对不对?谢谢🙏
请教高速高级(HSPWM)模式下怎么实现(频率-占空比)调节相位差180度PWM信号
2024-4-6 23:53 来自 huiyong828 发布@ 综合讨论
本帖最后由 huiyong828 于 2024-4-6 23:55 编辑
普通PWM模式下,可以正常输出波形
代码如下:
void PWMA_config(void)
{
u8 ccer1;
u8 ccer2;
u8 ps;
u8 eno;
P2M0 = 0xff; P2M1 = 0x00;
P3M0 = 0x40; P3M1 = 0x00;
P27 = 0;
P36 = 0;
P_SW2 |= 0x80; //SFR enable
PWMA_ENO = 0; // IO输出禁止
PWMA_IER = 0; // 禁止中断
PWMA_SR1
普通PWM模式下,可以正常输出波形
代码如下:
void PWMA_config(void)
{
u8 ccer1;
u8 ccer2;
u8 ps;
u8 eno;
P2M0 = 0xff; P2M1 = 0x00;
P3M0 = 0x40; P3M1 = 0x00;
P27 = 0;
P36 = 0;
P_SW2 |= 0x80; //SFR enable
PWMA_ENO = 0; // IO输出禁止
PWMA_IER = 0; // 禁止中断
PWMA_SR1
_nop_()函数调用错误,求助贴
2024-4-5 21:09 来自 lyagp03 发布@ 综合讨论
原本用的STC15系列,移植到STC8H系列。在原本代码中有调用nop函数,没有报错。在STC8H里面调用该函数报错。报错信息如下
warning C206: '_nop_': missing function-prototype
error C264: intrinsic '_nop_': declaration/activation error
好几次调用该函数都是报的这个错误。我查看了STC8H.h文件里面是有相关宏定义的,但是没办法调用这个内置函数。
warning C206: '_nop_': missing function-prototype
error C264: intrinsic '_nop_': declaration/activation error
好几次调用该函数都是报的这个错误。我查看了STC8H.h文件里面是有相关宏定义的,但是没办法调用这个内置函数。
求助贴,STC8Hxxx.h这个库文件哪里可以下载到
2024-4-5 17:05 来自 lyagp03 发布@ 综合讨论
烧录软件里面的例程没看到,社区下载的例程文件里面也没有找到,屠龙刀资料里面也没有找到。麻烦各位大佬给指点一下下载链接
怎样快速搭配程序?
2024-4-4 20:33 来自 cjtdz 发布@ 综合讨论
写程序就像造机器,全部自己写,就好像轴承、螺丝螺母自己加工,费时费力。采用自己、别人写好的程序搭建,好比用现成的零件组装。问题是,如何用已有的程序搭建?怎样搞好各部分的衔接?有什么诀窍?要注意什么?请大师们谈谈经验。
STC单片机程序移植问题
2024-4-4 20:20 来自 cjtdz 发布@ 综合讨论
STC15、STC8、STC32系列单片机程序相互移植时,都需要改动哪些地方?记性不好,哪款单片机必须配置端口?
stc32g屠龙刀开发板,使用strcmp函数问题。
2024-4-4 15:04 来自 大雨 发布@ 综合讨论
本帖最后由 大雨 于 2024-4-4 15:06 编辑
stc32g屠龙刀开发板,使用strcmp函数问题。
STC32G芯片 代码用strcmp库文件,不能通过编译。已经加头文件了#include <string.h>
一直找到原因
代码在CodeBlocks上正常运行,加入模块后在Keil上编译就不能通过,好像Keil_c251原始安装文件里就没有string.h,是自己后加上的不,忘了。。。。
int find_product(char *name) {int i;
for (i = 0; i < sizeof(products) / sizeof(products); i++) {
if (strcmp(products.name, name) == 0)
{
return i;
}
}
return -1;
}
stc32g屠龙刀开发板,使用strcmp函数问题。
STC32G芯片 代码用strcmp库文件,不能通过编译。已经加头文件了#include <string.h>
一直找到原因
代码在CodeBlocks上正常运行,加入模块后在Keil上编译就不能通过,好像Keil_c251原始安装文件里就没有string.h,是自己后加上的不,忘了。。。。
int find_product(char *name) {int i;
for (i = 0; i < sizeof(products) / sizeof(products); i++) {
if (strcmp(products.name, name) == 0)
{
return i;
}
}
return -1;
}
请教一个USB编译错误的问题
2024-4-4 10:27 来自 摇滚一族 发布@ 综合讨论
在学习USB的虚拟串口,用的是stc_usb_cdc_8h_xdata.LIB,写着写着编译就报错,一但报错,后退到正常的代码,也编译不了,还是报一样的错误,不清楚是哪里的设置问题,请教一下大家。
报错内容如下:
Rebuild target 'Target 1'
compiling main.c...
compiling oled.c...
linking...
LX51 LINKER/LOCATER V4.66.93.0 - SN: K1DZC-FA4Z4C
COPYRIGHT ARM Germany GmbH 1995 - 2018
@LED.lnp "main.obj",
"oled.obj",
".\stc_usb_cdc_8h_xdata.LIB"
TO "LED"
*** ERROR L214: INPUT PHASE ERROR
MODULE: main.obj (MAIN)
Target not created.
Build Time Elapsed: 00:00:01
报错内容如下:
Rebuild target 'Target 1'
compiling main.c...
compiling oled.c...
linking...
LX51 LINKER/LOCATER V4.66.93.0 - SN: K1DZC-FA4Z4C
COPYRIGHT ARM Germany GmbH 1995 - 2018
@LED.lnp "main.obj",
"oled.obj",
".\stc_usb_cdc_8h_xdata.LIB"
TO "LED"
*** ERROR L214: INPUT PHASE ERROR
MODULE: main.obj (MAIN)
Target not created.
Build Time Elapsed: 00:00:01
有用合集 | PID, 串口绘图,虚拟数码管
2024-4-3 23:31 来自 qepuemc 发布@ 综合讨论
//虚拟数码管显示
SBUF = 0x37;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x53;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x45;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x47;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x53;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x00;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x00;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x00;B_TX1_Busy = 1; while
SBUF = 0x37;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x53;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x45;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x47;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x53;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x00;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x00;B_TX1_Busy = 1; while(B_TX1_Busy);
SBUF = 0x00;B_TX1_Busy = 1; while