关于 avr studio 调试中 利用结构体,const的问题
来源:互联网 发布:宾馆网络怎是连接不上 编辑:程序博客网 时间:2024/06/07 13:13
这是avr studio的软件调试的这个问题 让我昨天弄到两点多 所以把它记录下来。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef unsigned char uint8_t;
typedef struct
{
char chip;
unsigned int addr;
int addr_length;
void *buffer;
unsigned int length;
} twi_pack_t;
unsigned char i2c_address[] =
{
0x6a,
0x6b,
0x34,
0x35,
};
int twi_master_read(const twi_pack_t *package)
{
unsigned char Status;
unsigned char * Data;
unsigned char sla;
unsigned char reg;
unsigned int len;
sla = package->chip;//把0x4b 传给sla 可是在avr studio中 总是出错 这个地方传不过来
reg = package->addr;
Data = package->buffer;
len = package->length;
return sla;
}
unsigned char address_slave(void)
{
uint8_t i;
uint8_t status;
static uint8_t *rxtmp;
twi_pack_t packet;
packet.chip = i2c_address[1];//把0x4b给chip
packet.addr = 0;
packet.addr_length = 0;
packet.buffer = (void*) rxtmp;
packet.length = 1;
status = twi_master_read(&packet);//通过结构体变量完成数据传递
return status;
}
int main()
{
unsigned char i;
i =address_slave();
printf("%x/n",i);
return 0;
}
这段代码是在我的工程里面截取的一段(编译环境ICC avr),在vc++ 6.0,keil中调试没问题 ox6b 可以成功的通过结构体变量packet.chip 传递给twi_master_read 函数中的 sla 变量 ,可是在avr studio里软件仿真时就不行 sla接不到正确的数,在函数twi_master_read中结构体的成员都没有传递进来, 然后我把 twi_master_read(const twi_pack_t *package) 中的 const 限定符 去掉 就ok了。
总结:avrstudio 软件仿真 在这个问题上有些缺陷 ,不过为保证 在iccavr中编译生成的 机器码中 出现这种错误而导致 功能不良 我只能选择先把const去掉 等功能ok后 在加上const 重新烧录 看实际效果。
- 关于 avr studio 调试中 利用结构体,const的问题
- AVR Studio中添加两个C文件遇到的问题
- AVR/Atmel Studio延时函数没有被调用的问题
- 关于 const * 的问题
- 关于const的问题
- 关于关于包中封装结构体的问题
- 关于operator const char *() const的问题
- AVR Studio中AVR学习之ADC转换
- Visual Studio中关于调试的小技巧
- 关于C中结构体的大小问题(sizeof)
- 关于结构体中如何计算的问题
- C语言中关于结构体大小的问题
- Avr-Gcc中关于delay函数的应用
- 关于Vc2005中头文件的static const int问题
- c++中关于const的一些细节问题
- 关于结构体的问题
- 关于const 的小问题
- 关于const的一个问题
- Because of you
- 函数指针
- MyEclipse开发webservice的几个问题
- LocalAlloc,VirtualAlloc,malloc,new的异同
- JAVA中使用正则表达式(一)
- 关于 avr studio 调试中 利用结构体,const的问题
- [译] MoPaQ归档格式
- [新技术]jQuery介绍
- 关于云计算
- 红尘人生
- flex 常用元标签讲解
- 建一个别人删不掉的文件夹
- 红尘笑
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)