请教一个变量的问题
本帖最后由 摇滚一族 于 2024-8-30 15:02 编辑配置了变量,发现读回来是野值,而不是0,给他赋值为0后,读回来还不是0,不清楚是什么原因?
用“STC8H8K64U-45MHz-LQFP64-DIP64-DEMO-CODE-20231007\15-通过USB CDC协议虚拟串口收发数据” 例程测试了 一下
仅定义了几个变量、然后赋值0、串口打印三行代码,如下标红处
出来部分也是野值……串口收到的数据为:aa 0,bb 0,cc 0,dd 0,ee 0,ff 4e00,gg 2031,hh 3336,ii 3403,jj 268
如果所有变量都不赋值0,串口收到的数据为:aa 4e20,bb 2000,cc ff1a,dd 9431,ee 0,ff 4e00,gg 2031,hh 3336,ii 3403,jj 268
不清楚是什么原因?请教各位大侠
代码:
#define PRINTF_HID //printf输出直接重定向到USB HID接口,放在"usb.h"头文件之前
#include "../comm/STC8h.h"//包含此头文件后,不需要再包含"reg51.h"头文件
#include "../comm/usb.h" //USB调试及复位所需头文件
#include <intrins.h>
#include <stdio.h>
#include <string.h>
#define MAIN_Fosc 24000000L //定义主时钟
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#"; //设置自动复位到ISP区的用户接口命令
u8 aa,bb,cc,dd,ee,ff,gg,hh,ii,jj;
//P3.2口按键复位所需变量
bit Key_Flag;
u16 Key_cnt;
void sys_init();
void delay_ms(u8 ms);
void KeyResetScan(void);
void main()
{
sys_init();//系统初始化
usb_init();//USB CDC 接口配置
IE2 |= 0x80; //IE2相关的中断位操作使能后,需要重新设置EUSB
EA = 1;
aa=0;bb=0;cc=0;dd=0;ee=0;ff=0;gg=0;hh=0;ii=0;jj=0;
while (1)
{
delay_ms(1);
KeyResetScan(); //长按P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码
if(DeviceState != DEVSTATE_CONFIGURED)//等待USB完成配置
continue;
if (bUsbOutReady)
{
usb_OUT_done(); //接收应答(固定格式)
printf("\r\nOutNumber=%bd\r\n",OutNumber);//使用 printf 函数打印接收数据长度
USB_SendData(UsbOutBuffer,OutNumber);//发送数据缓冲区,长度
printf("aa %x,bb %x,cc %x,dd %x,ee %x,ff %x,gg %x,hh %x,ii %x,jj %x \n",aa,bb,cc,dd,ee,ff,gg,hh,ii,jj);
}
}
}
printf使用问题,, 可以在论坛里搜搜这方面的东西 _奶咖君_ 发表于 2024-8-30 15:13
printf使用问题,, 可以在论坛里搜搜这方面的东西
我不用printf,实际使用也发现有同样的问题,所以才发这个贴子 摇滚一族 发表于 2024-8-30 15:34
我不用printf,实际使用也发现有同样的问题,所以才发这个贴子
别的是怎么输出的呢?0.0
这个图里面的printf这么用 肯定是不能得到你想要的结果。。
欸 你上面都直到u8 的变量要加b这 下面就不加了0.0你的这写aa,bb.... 不也是u8的么 你可以仿真一下看看吗? 不过 如果怀疑是变量的问题的话,,你可以整一个空的工程 加上串口的代码,,然后打印一下,,工程越干净 越能找到问题 printf("aa %bx \n",aa); wnagming 发表于 2024-8-31 06:56
我没看明白,我自己这么写没有发现什么问题啊,请教一下楼主的代码有什么问题? ...
他这里用的8H的单片机 printf这里 如果想要打印u8变量 要用%bx wnagming 发表于 2024-8-31 06:56
我没看明白,我自己这么写没有发现什么问题啊,请教一下楼主的代码有什么问题? ...
你测试的单片机是8H么? _奶咖君_ 发表于 2024-8-31 08:50
你测试的单片机是8H么?
感谢回复,改成%bx后,在例程里显示为0了
原程序原因也找到了,不是变量出问题了,是硬件有个键有问题,误触发了变量改变
页:
[1]
2