标题:
C语言数组奇怪地址少一位,发生溢出
[打印本页]
作者:
happy2058
时间:
2021-11-13 02:29
标题:
C语言数组奇怪地址少一位,发生溢出
当
SK_Data_KHz调到190的时候
,
SK_Data_KHz_switch=0,
SK_PWM=632 ,第0位
发生溢出。
已经检查了好几次,关闭
eeprom,刷了几次程序还是
溢出。
后面发现地址错了一位,就是往前了一位。现在
SK_Data_KHz=
250 ,实际对应该
SK_Data_KHz_switch
=59;
SK_PWM[59]=482.
当
SK_Data_KHz=190时
,
SK_PWM
数据为空
溢出。
不知为何会减1,就是加载的时候已以发生错误。
unsigned int
SK_Data_KHz
=250; //默认频率25K 每次加0.1
unsigned char
SK_Data_KHz_switch
=60; //默认 地址
//
0 1 2 3 4 5 6 7 8 9 10
//
190 191 192 193 194 195 196 197 198 199 200
code unsigned int SK_PWM[101]={ 632, 628, 625, 622, 619, 615, 612 ,609, 606 ,603, 600,
//
11 12 13 14 15 16 17 18 19 20
//
201 202 203 204 205 206 207 208 209 210
597, 594, 591, 588, 585, 583, 580, 577, 574, 571,
//
21 22 23 24 25 26 27 28 29 30
//
211 212 213 214 215 216 217 218 219 220
569, 566, 563, 561, 558, 556, 553, 550, 548, 545,
//
31 32 33 34 35 36 37 38 39 40
//
221 222 223 224 225 226 227 228 229 230
543, 541 ,538, 536, 533, 531, 529, 526, 524, 522,
//
41 42 43 44 45 46 47 48 49 50
//
231 232 233 234 235 236 237 238 239 240
519, 517, 515, 513, 511, 508, 506, 504, 502, 500,
//
51 52 53 54 55 56 57 58 59 60
//
241 242 243 244 245 246 247 248 249 250
498, 496, 494, 492, 490, 488, 486, 484, 482, 480,
..............};
switch(buf[1])
{
case 0x71:
if( buf[3]==0x01 ) //后台频率加+
{
memset(buf, 0, 18); //清空缓存区
if(
SK_Data_KHz<280
)
{
SK_Data_KHz++;
SK_Data_KHz_switch++;
SK_HZ_satar(SK_PWM[SK_Data_KHz_switch]);
send_string(ASCII_Data_add,18);
}
break;
}
if( buf[3]==0X02 ) //后台频率加-
{
memset(buf, 0, 18); //清空缓存区
if(
SK_Data_KHz>190
)
{
SK_Data_KHz--; //当
SK_Data_KHz=190溢出
SK_Data_KHz_switch--;
SK_HZ_satar(SK_PWM[SK_Data_KHz_switch]);
send_string(ASCII_Data_subtract,18);
}
break;
}
if( buf[3]==0x03 ) //返回保存
{
memset(buf, 0, 18); //清空缓存
作者:
188610329
时间:
2021-11-13 19:26
你光发个数组,别人帮你数一遍也不会发现什么问题。
最简单的方法:
把你觉得错位的数组, 从0开始依次 从串口 给你发过来,然后你核对那个位置开始错位了,方便你查找原因,为了方便核对 可以用TEXT 方式,按:
0) 0x....
1) 0x....
一行一个,
如果这样没错,说明数组是没有问题的,
那么你就用你调用数组的代码,读数组后,让串口发给你,
有时候自己的代码盯着看,怎么看怎么对,换几个方式也许很快就能发现问题。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1