[Kinetis] 在写PIT时发现的一个问题

[复制链接]
819|6
 楼主| 603133791 发表于 2015-11-7 13:21 | 显示全部楼层 |阅读模式
我在写PIT的时候,发现了一问题。
中断服务函数如下:
void pit0_isr()
{
  GPIOC_PTOR |= GPIO_PDOR_PDO(GPIO_PIN(18));
  PIT_T标志寄存器0 |= PIT_T标志寄存器_TIF_MASK;
}
发现LED灯不闪烁,我认为这样书写是没有问题的。但是就是不闪烁,不过改下如下就可以了:
void pit0_isr()
{  
  GPIOC_PTOR |= GPIO_PDOR_PDO(GPIO_PIN(18));  
  PIT_T标志寄存器0 |= PIT_T标志寄存器_TIF_MASK;  
  asm("nop");
}
这是怎么回事?难怪是清标志位的速度太快了?我主频100M
FSL_TICS_Robin 发表于 2015-11-9 10:24 | 显示全部楼层
楼主是否尝试过先请标志位再操作IO口呢?另外能够看一下你芯片正面刻的硅版本号,根据版本号查一下对应勘误表里是否有提到该模块问题。
Errata.jpg
FSL_TICS_ZJJ 发表于 2015-11-9 10:44 | 显示全部楼层
楼主你用的什么芯片型号?
下次问问题的时候,请给出具体的芯片型号,还有一般是进入中断后,先清除标志,然后再做事。
 楼主| 603133791 发表于 2015-11-9 13:28 | 显示全部楼层
使用的芯片版本号是MK60DN512VLL10 4N22D。确实如版本所言,先清标志位后是正确的。我PIT是参考山外论坛的中断来写的,看来是不正确的。
 楼主| 603133791 发表于 2015-11-9 13:29 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-11-9 10:44
楼主你用的什么芯片型号?
下次问问题的时候,请给出具体的芯片型号,还有一般是进入中断后,先清除标志, ...

使用的芯片版本号是MK60DN512VLL10 4N22D。确实如版本所言,先清标志位后是正确的。我PIT是参考山外论坛的中断来写的,看来是不正确的。
FSL_TICS_ZJJ 发表于 2015-11-9 14:09 | 显示全部楼层
603133791 发表于 2015-11-9 13:29
使用的芯片版本号是MK60DN512VLL10 4N22D。确实如版本所言,先清标志位后是正确的。我PIT是参考山外论坛 ...

不客气,问题解决了就好。
后续如果还有问题,欢迎继续交流,如果问题解决了,还请帮我们及时结贴哦。
shauew 发表于 2015-11-9 16:38 | 显示全部楼层
可能是你进中断太快,后面加了个小延时就有效果了,
太快了眼睛反应不过来的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

40

帖子

0

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