1430|1

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

C2000F2802x循环查询按键点亮LED [复制链接]

#include<F2802x_Device.h>
#include<DSP28x_Project.h>
void main(void)
{
    // 系统控制初始化
    InitSysCtrl();
    InitGpio();
    // 禁止全局中断
    DINT;
    InitPieCtrl();
    // 禁止CPU中断
    IER = 0x0000;
    // 清楚CPU所有中断标志
    IFR = 0x0000;
    // 位向量表中的所有中断向量配置对应的入口地址
    InitPieVectTable();
    // 允许访问受保护的空间
    EALLOW;
    // 配置GPIO0 GPIO1 GPIO2 GPIO3为输出,GPIO12为输入
    GpioCtrlRegs.GPADIR.all=0x000f;
    // 禁止 GPIO12 内部上拉
    GpioCtrlRegs.GPAPUD.bit.GPIO12 = 1;
    //禁止访问受保护的空间
    EDIS;
    while(1){
        if(GpioDataRegs.GPADAT.bit.GPIO12 == 1){
            GpioDataRegs.GPASET.bit.GPIO0 = 1;
        }else{
            GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
        }
    }
}

总结两点:

1、原以为这个程序会很容易实现,可还是费了不少工夫。在原来InitGpio()函数中,把所有的脚配置成了上拉输入。C2000LaunchPad原理图为

出现的现象是:

       程序开始执行后,GPIO12读到为低电平,按下按键,读到高电平,LED0熄灭。放开按键,再次按下,仿真看到仍然读到为高电平,LED无变化。

折腾了一阵子,身边两个万用表全没电了,没法看电阻R11上端电平。用导线把R11上端接地,GPIO12读到0,LED点亮。

分析原因:

        可能是C2000内部上拉电阻小于R11,导致GPIO12读到一直为高电平,但又不明白为啥按键按下前不读到高电平.....有点邪乎。

某大牛曾说,每一个莫名其妙现象的背后,都有一个知识的盲点。好吧,暂不求甚解。

解决方法:

        禁止GPIO12输入上拉后,测试OK
 

最新回复

学习了,谢谢!   详情 回复 发表于 2022-8-5 14:59
 
点赞 关注

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

学习了,谢谢!

 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表