定时器中断中打印变量值,一直打印是0?
这是1ms进入一次中断,自增变量的打印结果一直是0,是啥问题?/*********定时器T1中断函数********/
void Time1_isr() interrupt 3 using 1
{
Key_scan();
++interrupt_cnt;
printf("interrupt_cnt=%bd\r\n");//打印一直是0,程序运行指示灯异常;
if(interrupt_cnt>=300)
{
interrupt_cnt=0;
Flag_Second=1;
}
}
printf("interrupt_cnt=%u\r\n", interrupt_cnt); 变量没在printf里面 bkeuqoaq 发表于 2024-11-7 09:50
printf("interrupt_cnt=%u\r\n", interrupt_cnt);
感谢,我测试一下,
printf("interrupt_cnt=%bd\r\n");//打印一直是0,程序运行指示灯异常;
printf("interrupt_cnt=%bd\r\n",interrupt_cnt);//打印数字有正负且带d,
printf("interrupt_cnt=%ud\r\n",interrupt_cnt);//打印数字带d,
printf("interrupt_cnt=%u\r\n",interrupt_cnt);//打印数字对的,程序运行指示灯异常; 380091044 发表于 2024-11-7 10:13
感谢,我测试一下,
printf("interrupt_cnt=%bd\r\n");//打印一直是0,程序运行指示灯异常;
printf("int ...
printf("interrupt_cnt=%d\r\n", (unsigned int)interrupt_cnt); 打印的变量默认为16位,8位变量得强制成16位的。
但是没有强制成16位,也不至少一直都打印成0的 xxkj2010 发表于 2024-11-7 10:30
打印的变量默认为16位,8位变量得强制成16位的。
但是没有强制成16位,也不至少一直都打印成0的 ...
是因为printf内部的内存对齐机制问题,所以最好的解决方法还是对类型进行强制转换来指定 王昱顺 发表于 2024-11-7 10:53
是因为printf内部的内存对齐机制问题,所以最好的解决方法还是对类型进行强制转换来指定 ...
我记得以前也有时候没有强制转换,打印出来的是杂乱的数据,没有一直都是0的 xxkj2010 发表于 2024-11-7 10:59
我记得以前也有时候没有强制转换,打印出来的是杂乱的数据,没有一直都是0的 ...
printf("interrupt_cnt=%bd\r\n");
你仔细看他这一句呀,根本没把变量带进去,当然一直是0了…… hsrzq 发表于 2024-11-7 11:10
你仔细看他这一句呀,根本没把变量带进去,当然一直是0了……
是的,是的,还是你细心!
页:
[1]
2