注意升级后的STC8H.H头文件。
2023-3-24 21:52 来自 lgwd 发布@ 综合讨论
笔者一直使用STC芯片。STC芯片也在不断出新。近年已经使用STC8A的A12到D4版本,每次换用新的芯片,笔者都注意仔细阅读技术手册,并记录下需要使用的新增功能。
最近考虑产品改用STC8H8K64U芯片,目的直接用USB口与PC机连接,抛弃USB转串口芯片。
有关CDC串口程序已经打包完成,加入到以前的项目。发现仅仅将之前的STC8.H头文件替换为STC8H.H头文件,原程序没有任何改动,再编译项目。这时出现不少错误和警告。而且根据错误提示,很难确定错误的原因。
问题应该是由STC8H.H头文件引起。按理说后来的头文件应该是扩充了以前的头文件,虽然并没有使用扩展的寄存器等。最后仔细比较以前和现在的头文件,发现:程序中用到的寄存器“BUS_SPEED”在后来的头文件中没有定义。与ADC有关的符号值“ADC_START”和“ADC_FLAG”等均没有再定义,而之前程序中使用了。
再将“BUS_SPEED”加入STC8H.H头文件重新定义后,并添加与ADC相关的符号值,项目编译通过,无警告、无错误。
所以在改用新的芯片时,要注意头文件可能带来问题。对于几千行的程序,有时一个符号
最近考虑产品改用STC8H8K64U芯片,目的直接用USB口与PC机连接,抛弃USB转串口芯片。
有关CDC串口程序已经打包完成,加入到以前的项目。发现仅仅将之前的STC8.H头文件替换为STC8H.H头文件,原程序没有任何改动,再编译项目。这时出现不少错误和警告。而且根据错误提示,很难确定错误的原因。
问题应该是由STC8H.H头文件引起。按理说后来的头文件应该是扩充了以前的头文件,虽然并没有使用扩展的寄存器等。最后仔细比较以前和现在的头文件,发现:程序中用到的寄存器“BUS_SPEED”在后来的头文件中没有定义。与ADC有关的符号值“ADC_START”和“ADC_FLAG”等均没有再定义,而之前程序中使用了。
再将“BUS_SPEED”加入STC8H.H头文件重新定义后,并添加与ADC相关的符号值,项目编译通过,无警告、无错误。
所以在改用新的芯片时,要注意头文件可能带来问题。对于几千行的程序,有时一个符号
sbit和#define区别
2023-3-22 19:21 来自 980578873 发布@ 综合讨论
sbit led=P1^3;
#define led P13
以上两条语句它们效果是否一样,谢谢。
#define led P13
以上两条语句它们效果是否一样,谢谢。
有关sfr16定义寄存器读写无效
2023-3-22 17:29 来自 QQ624353765 发布@ 综合讨论
6203
我定义了一个sfr16的寄存器,是ADC转换结果寄存器定义成16位
用这16位的寄存器读取出来的值是0,为什么?难道sfr16不是这么用的吗
我定义了一个sfr16的寄存器,是ADC转换结果寄存器定义成16位
用这16位的寄存器读取出来的值是0,为什么?难道sfr16不是这么用的吗
读取BGV参考值错误
2023-3-22 16:49 来自 QQ624353765 发布@ 综合讨论
6194
6195
从idata读出来是0
从ROM中读出来是0xFFFF
EEPROM只用的512字节
单片机是stc8h8k64U
什么原因?
6195
从idata读出来是0
从ROM中读出来是0xFFFF
EEPROM只用的512字节
单片机是stc8h8k64U
什么原因?
单片机出现死机的问题
2023-3-22 16:32 来自 980578873 发布@ 综合讨论
大家好,小弟遇到一个很奇怪的问题:单片机(STC8H1K17)容易出现死机的现象,此时绿灯和橙灯都没有按照程序的意思去闪烁,而且保持常亮(程序初始化已关灯),串口也不打印任何信息。解决此问题的办法是:屏蔽I2C总线的读写两个函数,缺一不可,或者单片机断电重启也可以解决问题,目前原因未知,请教大家帮忙分析指点,谢谢。
6191
6191
求一份单片机锂电池充放电方案
2023-3-22 10:03 来自 QQ624353765 发布@ 综合讨论
项目中用到3.7v的锂电池,能推荐合适廉价,稳定的锂电池充放电管理系统。最好能有个低电压信号给单片机。
编译器提示错误
2023-3-22 09:15 来自 980578873 发布@ 综合讨论
在power_off.c文件里面已经定义count_5ms_off为无符号整型变量,在main.c文件里面也包括power_off.h文件进来了,power_off.h和power_off.c文件均添加到工程,但是在main.c文件里面使用count_5ms_off为何提示未定义?
6128
6129
6128
6129
程序文件超过64 部分功能不好用了
2023-3-21 14:45 来自 sinbo 发布@ 综合讨论
我用的是stc32g12k128 程序超过了64k了
Program Size: data=9.5 edata+hdata=2128 xdata=5782 const=5343 code=85546
我现在设置如下:程序可以编译,可以下载,但是有部分功能不好用了,比如oled屏幕的主页不显示了,eeprom里的数据也变了。除了这些设置还需要做其他的操作吗?
6062
6063
Program Size: data=9.5 edata+hdata=2128 xdata=5782 const=5343 code=85546
我现在设置如下:程序可以编译,可以下载,但是有部分功能不好用了,比如oled屏幕的主页不显示了,eeprom里的数据也变了。除了这些设置还需要做其他的操作吗?
6062
6063
STC8G1K08A,掉电模式后无法刷入程序
2023-3-21 14:44 来自 mx911 发布@ 综合讨论
程序大概是这样:
while(1)
{
PCON = 0x02;
}
然后掉电后再上电, ISP好像就找不到芯片了, 一直卡在checking target MCU ...
型号是STC8G1K08A
while(1)
{
PCON = 0x02;
}
然后掉电后再上电, ISP好像就找不到芯片了, 一直卡在checking target MCU ...
型号是STC8G1K08A
外部晶振切换问题
2023-3-21 13:21 来自 WHX 发布@ 综合讨论
6058
问题一、如图所示,当我程序里面在while(1)前面初始化时这样写:
P_SW2 = 0x80;
XOSCCR = 0xc0; //启动外部晶振——1
while (!(XOSCCR & 1)); //等待时钟稳定
CLKDIV = 0x00; //时钟不分频
CLKSEL = 0x01; //选择外部晶振——2
P_SW2 = 0x00;
总有点困惑,感觉1应该在2的后面,不知道对不对,恳请大神们解惑,十分感谢!
问题二、当下载后,提示如下图示:
6059
这个调节后的频率到底是内部晶振的频率还是外部晶振产生的频率?
问题一、如图所示,当我程序里面在while(1)前面初始化时这样写:
P_SW2 = 0x80;
XOSCCR = 0xc0; //启动外部晶振——1
while (!(XOSCCR & 1)); //等待时钟稳定
CLKDIV = 0x00; //时钟不分频
CLKSEL = 0x01; //选择外部晶振——2
P_SW2 = 0x00;
总有点困惑,感觉1应该在2的后面,不知道对不对,恳请大神们解惑,十分感谢!
问题二、当下载后,提示如下图示:
6059
这个调节后的频率到底是内部晶振的频率还是外部晶振产生的频率?
为啥运行正常的程序打包作为库再加入程序就不对了?
2023-3-20 17:05 来自 lgwd 发布@ 综合讨论
学习和修改了STC8H8K64U的转串口程序,改为符合自己需要的CDC串口程序。因为相关的代码不少,想尝试打包成库再加入其它应用程序。程序编译无警告、无错误且通讯正常。Keil中选择生成库。
再建立一个简单项目,加入库。主程序很简单,只是调用库中的串口轮询函数。编译没有错误,但下载到打狗棒中,之前的CDC串口不再出现了。之前库函数的程序是可以的。哪里不对了?
再建立一个简单项目,加入库。主程序很简单,只是调用库中的串口轮询函数。编译没有错误,但下载到打狗棒中,之前的CDC串口不再出现了。之前库函数的程序是可以的。哪里不对了?
芯片版本号问题
2023-3-20 14:09 来自 WHX 发布@ 综合讨论
请问,我们公司也买了10几片芯片做测试,现在STC都已经出正式版的芯片了,但是我看到我们公司买的芯片上面最后一个的字母竟然是A,不知道这个是是正式版还是测试版?请知道的大侠明示一下,感谢啦:)
单片机不能复位
2023-3-20 11:54 来自 980578873 发布@ 综合讨论
各位大佬:插入USB 5V时测试三极管Q3的集电极(Q3的第3脚)有低电平信号,单片机并没有复位,如果把R3改为0欧姆,插入USB 5V时单片机就可以复位,这是为什么?谢谢。
593559365937
593559365937
在21IC解决不了,发到这里求达人解决:STC8H工作电流大
2023-3-20 11:07 来自 tzgok 发布@ 综合讨论
1,所有io均按手册设置为准双向,输出ff,关闭所有上拉,没有打开任何外设,程序while (1);死循环,,实测工作电流为6ma,比手册的高1倍。。不知道什么原因,请路过的指教下。
2,同样测试条件和转换板,测试STC8G系列,电流就和手册一致,为3.3MA
2,同样测试条件和转换板,测试STC8G系列,电流就和手册一致,为3.3MA