程序莫明跳转至void HardFault_Handler(void)

[复制链接]
4963|15
 楼主| 28182900 发表于 2012-4-2 09:47 | 显示全部楼层 |阅读模式
void Data_Change(unsigned long TEMP, u8 *HighBit,u8 *MiddleHigh,u8 *MiddleLow,u8 *LowBit)
{
  *HighBit =    (unsigned char)(TEMP>>24);
  *MiddleHigh = (unsigned char)(TEMP>>16);
  *MiddleLow =  (unsigned char)(TEMP>>8);
  *LowBit =     (unsigned char)(TEMP);
}
只是在程序中加了并使用了这段函数。
Data_Change(ScrewPitch,0,&WBTxBuffer[17],&WBTxBuffer[16],&WBTxBuffer[15]);
 楼主| 28182900 发表于 2012-4-2 09:49 | 显示全部楼层
快来人那。。
lost1421 发表于 2012-4-2 10:18 | 显示全部楼层
单步运行,看看在执行哪一行时出错
 楼主| 28182900 发表于 2012-4-2 17:10 | 显示全部楼层
第一行就错了。纳闷了。谁帮我复制到工程里看看那。。我软件仿真的时候是OK的。
香水城 发表于 2012-4-2 18:09 | 显示全部楼层
Data_Change(ScrewPitch,0,&WBTxBuffer[17],&WBTxBuffer[16],&WBTxBuffer[15]);

不错才怪!
O狂且O 发表于 2012-4-2 23:30 | 显示全部楼层
参数不对, 编译过去了????:funk:
 楼主| 28182900 发表于 2012-4-3 07:38 | 显示全部楼层
本帖最后由 28182900 于 2012-4-3 07:49 编辑

没有错啊,我编译过了。各位再帮我看下
Data_Change(ScrewPitch,      0,      &WBTxBuffer[17],      &WBTxBuffer[16],       &WBTxBuffer[15]);
用软件就仿真是可以的。
willwu0327 发表于 2012-4-3 08:30 | 显示全部楼层
不知道你有沒有試過?
Data_Change(ScrewPitch,      &WBTxBuffer[17],      &WBTxBuffer[17],      &WBTxBuffer[16],       &WBTxBuffer[15]);
香水城 发表于 2012-4-3 09:36 | 显示全部楼层
LZ难道不知道给一个指针赋值0的后果?
 楼主| 28182900 发表于 2012-4-3 10:06 | 显示全部楼层
试了
Data_Change(ScrewPitch,      &WBTxBuffer[17],      &WBTxBuffer[17],      &WBTxBuffer[16],       &WBTxBuffer[15]);
确实可以,谢谢  willwu0327。

香水城  不知道赋值0的后果,不就是去操作0地址内存单元的内容吗?
烦请指教
香水城 发表于 2012-4-3 10:20 | 显示全部楼层
不就是去操作0地址内存单元的内容吗?  

请问0地址内存单元在哪里?物理上存在吗?
 楼主| 28182900 发表于 2012-4-3 10:25 | 显示全部楼层
呃 这个没想过也
 楼主| 28182900 发表于 2012-4-3 10:37 | 显示全部楼层
unsigned char   NULL = 0;

void Data_Change(unsigned long TEMP, u8 *HighBit,u8 *MiddleHigh,u8 *MiddleLow,u8 *LowBit)
{
  *HighBit =    (unsigned char)(TEMP>>24);
  *MiddleHigh = (unsigned char)(TEMP>>16);
  *MiddleLow =  (unsigned char)(TEMP>>8);
  *LowBit =     (unsigned char)(TEMP);
}

Data_Change(ScrewPitch,&NULL,&WBTxBuffer[17],&WBTxBuffer[16],&WBTxBuffer[15]);

这样可以了
香水城 发表于 2012-4-3 10:46 | 显示全部楼层
unsigned char   NULL = 0;

void Data_Change(unsigned long TEMP, u8 *HighBit,u8 *MiddleHigh,u8 *MiddleLow,u8 *LowBit)
{
  *HighBit =    (unsigned char)(TEMP>>24);
  *MiddleHigh = (unsigned char)(TEMP>> ...
28182900 发表于 2012-4-3 10:37


??  :L
 楼主| 28182900 发表于 2012-4-3 10:49 | 显示全部楼层
本帖最后由 28182900 于 2012-4-3 13:25 编辑

四个字节 有地址可以直接填地址,没地址 直接填NULL 。呵呵呵呵。
是可以这样吗。
你有没有更好的办法.不想浪费一个char
yangsu6 发表于 2012-4-3 12:46 | 显示全部楼层
编译器选的flash容量不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

1127

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部