4237|3

1071

帖子

7

TA的资源

纯净的硅(中级)

楼主
 

LPC1500体验—从零开始(I/O操作-点亮LED) [复制链接]

                 本来以为有库函数和例程玩LPC1500的板子可以事半功倍的,可是折腾了那么久还是没什么进展,主要的原因是不管是直接面对

寄存器还是直接调用库函数对于我这个初学者来说难度不是一般的大,哪怕手上有历程,可是不懂怎么用这是个问题。

                看来偷懒是不行的了,重新拾起初学51的那份劲头,从 I/O 操作开始......

int main(void)
{
    uint32_t ulLast_falling_edge_counter = 0;
    SystemCoreClockUpdate();

    GPIOInit();                                                           //使能GPIO 始终 ,关闭复位                     

    GPIOSetDir(0, 3, 1);                                             //设置 GPIO0_3 为输出

    GPIOSetBitValue(0,3,1);                                        //关闭LED ,(设置GPIO0_3 引脚为高电平)

    GPIOSetDir(0, 17, 0);                                            //设置 GPIO0_17 为输出


//    cfgIO(PAD_P1_19, PULL_DOWN);

    GPIOSetPinInterrupt(EXTERNAL_INT_NUM,0,17,EDGE_TRIGGER,FALLING);  

    while(1)
   {
        if(ulLast_falling_edge_counter != pin_int_falling_edge_counter[EXTERNAL_INT_NUM])  //有按键动作时,LED1 状态翻转
        {
            ulLast_falling_edge_counter = pin_int_falling_edge_counter[EXTERNAL_INT_NUM];
            LPC_GPIO->NOT[0] = (1<<3);                      //LED1 电平翻转
        }
    }
}

GPIOSetDir(0, 3, 1);    函数的声明是
void GPIOSetDir( uint32_t portNum, uint32_t bitPosi, uint32_t dir );
portNum: 端口号    bitPosi:  引脚号   dir:  (1:输出,0:输入)
这个函数设置某个引脚的 输入/输出  功能

GPIOSetBitValue(0,3,1);     的函数声明是
void GPIOSetBitValue( uint32_t portNum, uint32_t bitPosi, uint32_t bitVal );

portNum: 端口号    bitPosi:  引脚号   dir:  (1:高电平,0:低电平)
这个函数设置某个引脚的 电平

上面两个函数已经可以实现点亮LED 了,然后我加入按键控制LED亮灭,下面的这个函数
可以用来读取某个引脚的电平状态,不设置端口成  输入/输出  的时候,用这个函数是可以读取 端口的状态的,
设置之后就不得了(具体原因待高人解答)

GPIOGetPinValue( 0, 17 );
uint32_t GPIOGetPinValue( uint32_t portNum, uint32_t bitPosi )
portNum: 端口号    bitPosi:  引脚号

至于void GPIOSetPinInterrupt( uint32_t channelNum, uint32_t portNum, uint32_t bitPosi,uint32_t sense, uint32_t event );
这个函数的话
刚开始我不是很理解,不过声明的注释说  初始化所有GPIO 的时钟和复位外设
channelNum: 中断号  portNum: 端口号    bitPosi:  引脚号   sense:电平或边沿触发    event: 触发方式: 上升沿或高/下降沿或低

这时我大概知道了这是在开中断,可我纳闷的是按他这声明的意思是我可以设置任意某个端口为外部中断口!!!!!!!!!!那不是说这货
全身上下都是外部中断源。
为证明这个有点离谱的想法还特意用自己做的按键去别的口试了遍,没想到真行!!!!!!!!!!!!11

一开始我都傻了,全身上下都是外部中断源!!!!!!!!!!!!!!!!

后来想到单片机的的某些功能是可以在引脚之间切换的,又 联想数据手册上说的什么 开关矩阵  ,然后然后然后我似乎知道了些什么.........


此帖出自NXP MCU论坛

最新回复

nmg
楼主加油  详情 回复 发表于 2014-8-4 10:00
点赞 关注
 

回复
举报

1071

帖子

7

TA的资源

纯净的硅(中级)

沙发
 

此帖出自NXP MCU论坛
 
 
 

回复

1071

帖子

7

TA的资源

纯净的硅(中级)

板凳
 
https://bbs.eeworld.com.cn/thread-442187-1-2.html    我的例程是在这个帖子 下的,例程调试的用的是 LPC1549JBD100 的芯片,板子和论坛搞活动送的板子有些不同,用这例程调试的时候得注意
此帖出自NXP MCU论坛
 
 
 

回复

5262

帖子

239

TA的资源

管理员

4
 
楼主加油
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表