智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2912|回复: 8
打印 上一主题 下一主题

求帮助,写程序总是硬件发生内核错误

[复制链接]

4

主题

215

帖子

0

精华

高级会员

Rank: 4

积分
950
威望
490
贡献
234
兑换币
314
注册时间
2013-11-5
在线时间
113 小时
毕业学校
棣棠中心校
跳转到指定楼层
1#
发表于 2014-2-20 15:52:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天,今天写程序总是跑飞。调节速度PID时,程序总是出各种问题。电机运行10s左右就不动了,然后今天我就只留下测编码器脉冲的程序,结果还是一样,串口显示******内核发生硬件错误******。求帮助,我编程不好,不知道是啥问题。
#include "common.h"

GPIO_InitTypeDef gpio_init_struct;
FTM_InitTypeDef ftm_init_param;
PIT_InitTypeDef pit_init_param;
LPTMR_InitTypeDef lptmr_init_param;
uint16_t GetFreq;
uint16_t GetCnt;

void pit_isr0();

void main (void)
{
   DisableInterrupts;

  gpio_init_struct.GPIO_PTx = PTA;      //PORTA
  gpio_init_struct.GPIO_Pins = GPIO_Pin9;     //引脚9
  gpio_init_struct.GPIO_Dir = DIR_OUTPUT;        //输出
  gpio_init_struct.GPIO_Output=OUTPUT_L;
  LPLD_GPIO_Init(gpio_init_struct);

  ftm_init_param.FTM_Ftmx = FTM1;
  ftm_init_param.FTM_PwmFreq = 10000;//100Khz
  ftm_init_param.FTM_Mode = FTM_MODE_PWM;
  //初始化PIT
  pit_init_param.PIT_Pitx = PIT0;
  pit_init_param.PIT_PeriodMs = 20;//20ms
  pit_init_param.PIT_Isr = pit_isr0;
  //LPTMR_MODE_PLACC脉冲累加模式
  //禁用中断
  //无中断函数
  lptmr_init_param.LPTMR_Mode = LPTMR_MODE_PLACC;
  lptmr_init_param.LPTMR_PluseAccInput = LPTMR_ALT1;
  lptmr_init_param.LPTMR_Isr = NULL;
  //FTM,PIT,LPTMR初始化
  LPLD_PIT_Init(pit_init_param);
  LPLD_PIT_EnableIrq(pit_init_param); //使能PIT中断
  LPLD_FTM_Init(ftm_init_param);
  LPLD_LPTMR_Init(lptmr_init_param);
  LPLD_FTM_PWM_Enable(FTM1,FTM_Ch0,0,PTA8,ALIGN_LEFT);

  GetFreq=0;
  GetCnt=0;

  LPLD_GPIO_Output_b(PTA,9,0);
  LPLD_FTM_PWM_ChangeDuty(FTM1, FTM_Ch0,1000);

  EnableInterrupts;

  while(1)
  {  
     asm("nop");
  }
}

void pit_isr0()
{
    GetFreq=LPLD_LPTMR_GetPulseAcc();
    printf("%d\n",GetFreq);

    LPLD_LPTMR_ResetCounter();       //复位LPTMR0 counter
    LPLD_LPTMR_Init(lptmr_init_param);
}
回复

使用道具 举报

1

主题

70

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1063
威望
524
贡献
301
兑换币
343
注册时间
2013-9-6
在线时间
119 小时
毕业学校
山大
2#
发表于 2014-2-20 16:47:19 | 只看该作者
一步一步仿真调试,看那一步进入硬件中断
回复 支持 反对

使用道具 举报

4

主题

215

帖子

0

精华

高级会员

Rank: 4

积分
950
威望
490
贡献
234
兑换币
314
注册时间
2013-11-5
在线时间
113 小时
毕业学校
棣棠中心校
3#
 楼主| 发表于 2014-2-20 17:03:18 | 只看该作者
Element. 发表于 2014-2-20 16:47
一步一步仿真调试,看那一步进入硬件中断

太烦了,每次写程序都容易出错,还是这种不好找的错误

回复 支持 反对

使用道具 举报

4

主题

215

帖子

0

精华

高级会员

Rank: 4

积分
950
威望
490
贡献
234
兑换币
314
注册时间
2013-11-5
在线时间
113 小时
毕业学校
棣棠中心校
4#
 楼主| 发表于 2014-3-1 11:37:35 | 只看该作者
本帖已终结,是单片机坏了
回复 支持 反对

使用道具 举报

12

主题

222

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3163
威望
1367
贡献
746
兑换币
635
注册时间
2013-9-15
在线时间
525 小时
毕业学校
xd
5#
发表于 2014-3-27 08:17:55 | 只看该作者
stxhb 发表于 2014-3-1 11:37
本帖已终结,是单片机坏了

单片机坏了?难道我的也是?
回复 支持 反对

使用道具 举报

4

主题

215

帖子

0

精华

高级会员

Rank: 4

积分
950
威望
490
贡献
234
兑换币
314
注册时间
2013-11-5
在线时间
113 小时
毕业学校
棣棠中心校
6#
 楼主| 发表于 2014-3-27 09:12:23 | 只看该作者
天荒地老 发表于 2014-3-27 08:17
单片机坏了?难道我的也是?

反正我的是单片机问题,换了一个就好了
回复 支持 反对

使用道具 举报

12

主题

222

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3163
威望
1367
贡献
746
兑换币
635
注册时间
2013-9-15
在线时间
525 小时
毕业学校
xd
7#
发表于 2014-3-27 09:16:42 | 只看该作者
stxhb 发表于 2014-3-27 09:12
反正我的是单片机问题,换了一个就好了

哦哦,lptmr测速调试了老长时间,用的也是拉普兰德的库,而且是带Z的芯片,却一直读数是0。。。。前两天就出现这种情况,说多了都是泪呀
回复 支持 反对

使用道具 举报

4

主题

215

帖子

0

精华

高级会员

Rank: 4

积分
950
威望
490
贡献
234
兑换币
314
注册时间
2013-11-5
在线时间
113 小时
毕业学校
棣棠中心校
8#
 楼主| 发表于 2014-3-27 14:27:07 | 只看该作者
天荒地老 发表于 2014-3-27 09:16
哦哦,lptmr测速调试了老长时间,用的也是拉普兰德的库,而且是带Z的芯片,却一直读数是0。。。。前两天就 ...

lptmr  K60不带Z的,要修改LPLD的底层库才行,貌似他寄存器配置错了
回复 支持 反对

使用道具 举报

4

主题

215

帖子

0

精华

高级会员

Rank: 4

积分
950
威望
490
贡献
234
兑换币
314
注册时间
2013-11-5
在线时间
113 小时
毕业学校
棣棠中心校
9#
 楼主| 发表于 2014-3-27 14:29:06 | 只看该作者
stxhb 发表于 2014-3-27 14:27
lptmr  K60不带Z的,要修改LPLD的底层库才行,貌似他寄存器配置错了

带Z的话,就看看线,引脚,或者程序问题了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-7 04:50 , Processed in 0.048336 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表