dsp28335复位电路_28335串口不能中断

dsp28335复位电路_28335串口不能中断0前言本期实验目标:采用外部中断方式响应按键触发,实现LED电平反转。外部中断是DSP十分常用的功能,通常用来响应一些控制操作,比如判断按键是否按下,传感器是否接收到信号等等。那么通过该例程,大家则可以快速学会使用外部中断的功能!本节仍然将分为硬件部分、软件部分和实验展示三个方面进行介绍。1硬件部分DSP28335支持XINT1-XINT7和XNMI共8路外部中断源,其中中断源XINT1/2和XNMI可以设定为从GPIO端口A的任意一个管脚输入,即GPIO0-GPIO31。而XINT3/4/5/

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

0 前言

本期实验目标:采用外部中断方式响应按键触发,实现LED电平反转。

外部中断是DSP十分常用的功能,通常用来响应一些控制操作,比如判断按键是否按下,传感器是否接收到信号等等。那么通过该例程,大家则可以快速学会使用外部中断的功能!本节仍然将分为硬件部分、软件部分和实验展示三个方面进行介绍。

1 硬件部分

DSP28335支持XINT1-XINT7和XNMI共8路外部中断源,其中中断源XINT1/2和XNMI可以设定为从GPIO端口A的任意一个管脚输入,即GPIO0-GPIO31。而XINT3/4/5/6/7可以设定为从GPIO端口B的任意一个管脚输入,即GPIO32-GPIO63,在这里我们设置设置GPIO13作为XINT1源的输入。每个中断源的触发方式都分别支持:上升沿触发,下降沿触发,上升沿和下降沿同时触发。在这里我们设置下降沿触发方式。

图1给出了硬件连接图,由于核心板的4个按键都没有连接在外部中断源上,因此我们可以用杜邦线将GPIO67和GPIO13连起来,这样在按下按键的时候,GPIO67接收到的低电平就可以传到GPIO13,从而触发中断。
在这里插入图片描述


图1 硬件连接图

2 软件部分

注意:查看代码时双击点进去看,否则会内容不全
bsp_led.c(GPIO配置和中断配置)

/** * ******************************************************************************************** * @file bsp.led.c * @file SK Electronics * @version V1.0 * @date 2020-xx-xx * @brief LED应用函数接口 * ******************************************************************************************* * @attention * 实验平台:SK-F28335Mini 核心板 * CSDN博客:https://blog.csdn.net/weixin_46556696 * 淘宝:https://shop409670932.taobao.com */
#include "bsp_led.h"
void LED_GPIO_Config(void)
{ 
   
    EALLOW;
    GpioCtrlRegs.GPAMUX1.bit.GPIO0=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO0=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO0=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO1=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO1=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO1=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO2=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO2=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO3=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO3=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO3=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO4=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO4=1;//配置成输出

    GpioCtrlRegs.GPCMUX1.bit.GPIO67=0;//普通IO模式
    GpioCtrlRegs.GPCPUD.bit.GPIO67=0;//使能内部上拉
    GpioCtrlRegs.GPCDIR.bit.GPIO67=1;//配置成输出
    GpioDataRegs.GPCCLEAR.bit.GPIO67=1;//默认输出低电平

    GpioDataRegs. GPASET.bit.GPIO0=1;
    GpioDataRegs. GPASET.bit.GPIO1=1;
    GpioDataRegs. GPASET.bit.GPIO2=1;
    GpioDataRegs. GPASET.bit.GPIO3=1;
    GpioDataRegs. GPASET.bit.GPIO4=1;
    EDIS;
}

void InitExInt(void)  //外部中断的配置
{ 
   
     EALLOW;
     GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0;      //普通IO模式
     GpioCtrlRegs.GPADIR.bit.GPIO13 = 0;       //设置为输入
    // GpioCtrlRegs.GPAQSEL1.bit.GPIO13= 2; //采用6次采样的采样窗
    // GpioCtrlRegs.GPACTRL.bit.QUALPRD1=255; //采样周期=510*系统时钟周期 采样窗时间=采样周期*(6-1) 17us 为了消除输入引脚噪声所用
     GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 13;//选择GPIO13为外部输入XINT输入引脚
     XIntruptRegs.XINT1CR.bit.POLARITY= 0;     //下降沿触发中断
     XIntruptRegs.XINT1CR.bit.ENABLE = 1;      //使能XINT中断
     EDIS;
}

bsp_led.h

/** * ******************************************************************************************** * @file main.c * @file SK Electronics * @version V1.0 * @date 2020-xx-xx * @brief LED应用函数接口头文件 * ******************************************************************************************* * @attention * 实验平台:SK-F28335Mini 核心板 * CSDN博客:https://blog.csdn.net/weixin_46556696 * 淘宝:https://shop409670932.taobao.com */

#ifndef _BSP_LED_H_
#define _BSP_LED_H_
#include "DSP28x_Project.h"

/* 宏带参,可以像内联函数一样使用,低电平亮灯*/
#define LED0(a) if (a) \ GpioDataRegs. GPACLEAR.bit.GPIO0=1;\ else \ GpioDataRegs. GPASET.bit.GPIO0=1

#define LED1(a) if (a) \ GpioDataRegs. GPACLEAR.bit.GPIO1=1;\ else \ GpioDataRegs. GPASET.bit.GPIO1=1

#define LED2(a) if (a) \ GpioDataRegs. GPACLEAR.bit.GPIO2=1;\ else \ GpioDataRegs. GPASET.bit.GPIO2=1

#define LED3(a) if (a) \ GpioDataRegs. GPACLEAR.bit.GPIO3=1;\ else \ GpioDataRegs. GPASET.bit.GPIO3=1

#define LED4(a) if (a) \ GpioDataRegs. GPACLEAR.bit.GPIO4=1;\ else \ GpioDataRegs. GPASET.bit.GPIO4=1

/*定义IO口的宏*/
#define LED0_TOGGLE GpioDataRegs. GPATOGGLE.bit.GPIO0=1
#define LED0_OFF GpioDataRegs. GPASET.bit.GPIO0=1
#define LED0_ON GpioDataRegs. GPACLEAR.bit.GPIO0=1

#define LED1_TOGGLE GpioDataRegs. GPATOGGLE.bit.GPIO1=1
#define LED1_OFF GpioDataRegs. GPASET.bit.GPIO1=1
#define LED1_ON GpioDataRegs. GPACLEAR.bit.GPIO1=1

#define LED2_TOGGLE GpioDataRegs. GPATOGGLE.bit.GPIO2=1
#define LED2_OFF GpioDataRegs. GPASET.bit.GPIO2=1
#define LED2_ON GpioDataRegs. GPACLEAR.bit.GPIO2=1

#define LED3_TOGGLE GpioDataRegs. GPATOGGLE.bit.GPIO3=1
#define LED3_OFF GpioDataRegs. GPASET.bit.GPIO3=1
#define LED3_ON GpioDataRegs. GPACLEAR.bit.GPIO3=1

#define LED4_TOGGLE GpioDataRegs. GPATOGGLE.bit.GPIO4=1
#define LED4_OFF GpioDataRegs. GPASET.bit.GPIO4=1
#define LED4_ON GpioDataRegs. GPACLEAR.bit.GPIO4=1

void LED_GPIO_Config(void);
void InitExInt(void);
#endif /*_BSP_LED_H_ */

main.c

/** * ******************************************************************************************** * @file main.c * @file SK Electronics * @version V1.0 * @date 2021-xx-xx * @brief 外部中断测试 * ******************************************************************************************* * @attention * 实验平台:SK-F28335Mini 核心板 * CSDN博客:https://blog.csdn.net/weixin_46556696 * 淘宝:https://shop409670932.taobao.com */
#include "DSP28x_Project.h"
#include "bsp_led.h"
#define FLASH_RUN 1
#define SRAM_RUN 2
#define RUN_TYPE FLASH_RUN
#if RUN_TYPE==FLASH_RUN
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
#endif

interrupt void ISRExint1(void);  //声明外部中断1

/**********************************************************************************************/
void delay_1ms(Uint16 t);
/** * @brief 主函数 * @parameter 无 * @return_value 无 */
void main(void)
{ 
   
/*第一步:初始化系统控制:*/
    InitSysCtrl();
/*第二步:初始化GPIO口*/
    InitGpio();
/* 第三步:清除所有中断 和初始化 PIE 向量表:*/
    DINT;// 关闭全局中断
    InitPieCtrl();// 初始化 PIE 控制寄存器到默认状态,默认状态是全部 PIE 中断被禁用和标志位被清除
    IER = 0x0000;// 禁用 CPU 中断和清除所有 CPU 中断标志位:
    IFR = 0x0000;
    InitPieVectTable();// 初始化 PIE 中断向量表
    // 中断重映射,注册中断程序入口(用户按需求添加)
    EALLOW;
    PieVectTable.XINT1 = &ISRExint1;     // 将外部中断添加都中断向量表里
    EDIS;
    //

    /*程序烧录入28335(可选的)*/
#if RUN_TYPE==FLASH_RUN
    MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
    InitFlash();
#endif
/* 第四步: 初始化片上外设*/
    // InitPeripherals(); //初始化所有外设(本例程不需要)
    IER |= M_INT1;                       //使能第1组中断
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;   //使能总中断
    PieCtrlRegs.PIEIER1.bit.INTx4= 1;    //使能第1组中断里的第4个中断--外部中断1

/* 第五步:添加用户功能具体代码*/
    EINT;
    ERTM;
    LED_GPIO_Config();
    InitExInt();
    LED0(1);
    LED1(1);
    LED2(1);
    LED3(1);
    LED4(1);
    for(;;)
    { 
   

    }
}


void delay_1ms(Uint16 t)
{ 
   
    while(t--)
    { 
   
        DELAY_US(1000);
    }
}


/**********************************************************************************************/

interrupt void ISRExint1(void)
{ 
   
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;//0x0001赋给12组中断ACKnowledge寄存器,对其全部清除,不接受其他中断
    DELAY_US(1000);  //延时
    if(GpioDataRegs.GPADAT.bit.GPIO13 == 0)//检测到电平变化触发中断
    { 
   
        LED0_TOGGLE;  //取反
        LED1_TOGGLE;  //取反
        LED2_TOGGLE;  //取反
        LED3_TOGGLE;  //取反
        LED4_TOGGLE;
        DELAY_US(5000);//延时
    }
}

3 实验展示

程序烧录进去后,通过按键对应的按键,可以观察到LED的电平状态反转。
在这里插入图片描述
大家可以参考代码尝试一下, 有疑问的欢迎留言!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196474.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国内可用的Internet时间同步服务器地址(NTP时间服务器)[通俗易懂]

    国内可用的Internet时间同步服务器地址(NTP时间服务器)[通俗易懂]不知道什么鬼我这系统自带的Internet时间同步服务器地址居然不可用,终端ping系统自带服务器两个居然都不通???难道时间服务器也和谐么?好在阿里云提供了7个NTP时间服务器也就是Interne

    2022年7月1日
    168
  • idea2021.10 mac激活码_在线激活[通俗易懂]

    (idea2021.10 mac激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    62
  • 关于 sso 博客大巴的神仙的一点思路

    关于 sso 博客大巴的神仙的一点思路
    聊天中的一些片段。。。可以记录参考下
     
    1每个应用独立维护自己的session
     
    2用户中心是一个特殊的应用,负责用户登录验证某个需要登录的应用发现没有登录状态就跳到用户中心用户中心判断有没在自己这里登录过,登录过就返回用户信息,没登陆过就先登录,然后记自己的session别的应用收到以后根据用户信息记自己的session之后只要自己的session还在,就不关用户中心的事了

    2022年7月12日
    13
  • order by case when执行优先级_sql case语句

    order by case when执行优先级_sql case语句MySQL语句中执行优先级——and比or高例:select*fromtablewhere条件1AND条件2OR条件3等价于select*fromtablewhere(条件1AND条件2)OR条件3select*fromtablewhere条件1AND条件2OR条件3AND条件4等价于select*fromtablewhere(条件1AND条件2)OR(条件3AND条件4)sql执行顺序

    2022年9月3日
    2
  • C/C++中static变量和static函数的用法

    C/C++中static变量和static函数的用法静态成员数据和静态成员函数1.C中静态数据和静态函数的用法C语言中定义一个静态变量和静态函数主要是为了满足某个文件的需求比如我们在文件List.c中定义staticintcount=0;//静态变量staticintget_last_node(List*Head)

    2022年7月16日
    125
  • java工具大全[通俗易懂]

    java工具大全[通俗易懂]一、Java线上诊断工具ArthasArthas阿里巴巴2018年9月开源的一款Java线上诊断工具。工具的使用场景:1、这个类从哪个jar包加载的?为什么会报各种类相关的Exception?2、我改的代码为什么没有执行到?难道是我没commit?分支搞错了?3、遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?4、线上遇到某个用户的数据处理有问题,但线上同样无法debug,线下无法重现!5、是否有一个全局视角来查看系统的运行状况?6、有什么办法可以监控到JVM的

    2022年7月7日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号