注册 登录
查看: 261|回复: 6

程序解释一下啊

[复制链接]
发表于 2014-9-17 13:35:49 | 显示全部楼层 |阅读模式
void PORTD_IRQHandler(void)
{

#if 0       // 条件编译,两种方法可供选择

    uint8  n = 0;    //引脚号
    n = 7;
    if(PORTD_ISFR & (1 << n))           //PTD7 触发中断
    {
        PORTD_ISFR  = (1 << n);        //写1清中断标志位

        /*  以下为用户任务  */

        key_handler();

        /*  以上为用户任务  */
    }

回复

使用道具 举报

发表于 2014-9-17 13:37:08 | 显示全部楼层
这寄存器,需要看手册的。
PORTD_ISFR 就是中断标志位。
#if 0     这个是条件编译

我记得视频上是有讲解的啊。
回复 支持 反对

使用道具 举报

发表于 2014-9-17 13:38:20 | 显示全部楼层
这里的代码都注释得很好了,你哪个语法没看懂?
回复 支持 反对

使用道具 举报

发表于 2014-9-17 13:44:06 | 显示全部楼层
PORTD_ISFR  是PORTD 的32位的中断标志位,每个位分别对于 管脚号的。
我们的视频讲解了如何看手册的寄存器。

(1 << n) 就是 位7,PORTD_ISFR & (1 << n) 就是判断位7的标志位
回复 支持 反对

使用道具 举报

发表于 2014-9-17 13:44:51 | 显示全部楼层
这部分涉及寄存器,如果你对寄存器不熟悉,或者根本没看到寄存器,是很难看懂的,建议先看看我们的视频。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-17 13:49:39 | 显示全部楼层
山外メ雲ジ 发表于 2014-9-17 13:44
这部分涉及寄存器,如果你对寄存器不熟悉,或者根本没看到寄存器,是很难看懂的,建议先看看我们的视频。

恩恩,现在明白了,之前发到了初学123,没人回答我,感情是发错地方了
回复 支持 反对

使用道具 举报

发表于 2014-9-17 13:51:18 | 显示全部楼层
tielang 发表于 1410932979
恩恩,现在明白了,之前发到了初学123,没人回答我,感情是发错地方了
嗯,现在分开,那么只负责stm32。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

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

本版积分规则

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