打印

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

[复制链接]
4366|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的。

使用特权

评论回复
5
香水城| | 2012-4-2 18:09 | 只看该作者
Data_Change(ScrewPitch,0,&WBTxBuffer[17],&WBTxBuffer[16],&WBTxBuffer[15]);

不错才怪!

使用特权

评论回复
6
O狂且O| | 2012-4-2 23:30 | 只看该作者
参数不对, 编译过去了????:funk:

使用特权

评论回复
7
28182900|  楼主 | 2012-4-3 07:38 | 只看该作者
本帖最后由 28182900 于 2012-4-3 07:49 编辑

没有错啊,我编译过了。各位再帮我看下
Data_Change(ScrewPitch,      0,      &WBTxBuffer[17],      &WBTxBuffer[16],       &WBTxBuffer[15]);
用软件就仿真是可以的。

使用特权

评论回复
8
willwu0327| | 2012-4-3 08:30 | 只看该作者
不知道你有沒有試過?
Data_Change(ScrewPitch,      &WBTxBuffer[17],      &WBTxBuffer[17],      &WBTxBuffer[16],       &WBTxBuffer[15]);

使用特权

评论回复
9
香水城| | 2012-4-3 09:36 | 只看该作者
LZ难道不知道给一个指针赋值0的后果?

使用特权

评论回复
10
28182900|  楼主 | 2012-4-3 10:06 | 只看该作者
试了
Data_Change(ScrewPitch,      &WBTxBuffer[17],      &WBTxBuffer[17],      &WBTxBuffer[16],       &WBTxBuffer[15]);
确实可以,谢谢  willwu0327。

香水城  不知道赋值0的后果,不就是去操作0地址内存单元的内容吗?
烦请指教

使用特权

评论回复
11
香水城| | 2012-4-3 10:20 | 只看该作者
不就是去操作0地址内存单元的内容吗?  

请问0地址内存单元在哪里?物理上存在吗?

使用特权

评论回复
12
28182900|  楼主 | 2012-4-3 10:25 | 只看该作者
呃 这个没想过也

使用特权

评论回复
13
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]);

这样可以了

使用特权

评论回复
14
香水城| | 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

使用特权

评论回复
15
28182900|  楼主 | 2012-4-3 10:49 | 只看该作者
本帖最后由 28182900 于 2012-4-3 13:25 编辑

四个字节 有地址可以直接填地址,没地址 直接填NULL 。呵呵呵呵。
是可以这样吗。
你有没有更好的办法.不想浪费一个char

使用特权

评论回复
16
yangsu6| | 2012-4-3 12:46 | 只看该作者
编译器选的flash容量不对

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

1127

帖子

2

粉丝