⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpio.c

📁 CPU定时器中断函数 用于处理定时器总段
💻 C
字号:
//==============cpu 中断============================//

#include"DSP281x_Device.h"

void Configuregpio(void);
void InitialSystem(void);
interrupt void cpu_timer0_isr(void);

void main(void)

{
  
  unsigned int LED= 1;
  
  InitialSystem();      //初始化内核寄存器
  Configuregpio();       //对Gpio口进行配置
  
  InitPieCtrl(); //调用pie控制单元初始化函数
  InitPieVectTable();//调用pie向量表初始化函数
  EALLOW;
  
  PieVectTable.TINT0=&cpu_timer0_isr;//对入口向量地址重新映射
  EDIS;
  InitCpuTimers();
  ConfigCpuTimer(&CpuTimer0,150,50000);//设置定时期时间
  
  PieCtrlRegs.PIEIER1.bit.INTx7=1;//使能pie的TINT0中断
  
  IER=1;  //使能全局中断
  EINT;
  ERTM;
  CpuTimer0Regs.TCR.bit.TSS=0;//启动定时期
  
  while(1)
  {
  
  GpioDataRegs.GPBDAT.bit.GPIOB0=LED;
  while(CpuTimer0.InterruptCount<3);
  CpuTimer0.InterruptCount=0;  
  LED=1-LED;

  }
}


//=====================GPIO口初始化配置======================//

void  Configuregpio(void)

{

EALLOW;   //在向保护型寄存器写数据时接触保护

//将GPIO口配置成通用I/O口

GpioMuxRegs.GPAMUX.all=0x0;  
GpioMuxRegs.GPBMUX.all=0x0;
GpioMuxRegs.GPDMUX.all=0x0;
GpioMuxRegs.GPEMUX.all=0x0;
GpioMuxRegs.GPFMUX.all=0x0;
GpioMuxRegs.GPGMUX.all=0x0;

//配置管脚输入输出功能
GpioMuxRegs.GPADIR.all=0x0;
GpioMuxRegs.GPBDIR.all=0x00FF;
GpioMuxRegs.GPDDIR.all=0x0;
GpioMuxRegs.GPEDIR.all=0x0;
GpioMuxRegs.GPFDIR.all=0x0;
GpioMuxRegs.GPGDIR.all=0x0;

//将所有GPIO口限制设定为0
GpioMuxRegs.GPAQUAL.all=0x0;
GpioMuxRegs.GPBQUAL.all=0x0;
GpioMuxRegs.GPDQUAL.all=0x0;
GpioMuxRegs.GPEQUAL.all=0x0;
EDIS;     //对寄存器加保护
}


//=====================系统初始化函数===================//

void  InitialSystem(void)

{

EALLOW;                   //在向保护型寄存器写数据时接触保护
SysCtrlRegs.WDCR=0x00E8;  //  设置看门狗模块 ,禁止看门狗

SysCtrlRegs.PLLCR.bit.DIV=10;  //设置150M时钟

SysCtrlRegs.HISPCP.all=0x1;    //设置高速时钟

SysCtrlRegs.LOSPCP.all=0x2;    //设置低速时钟

SysCtrlRegs.PCLKCR.bit.EVAENCLK=0;

SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;

SysCtrlRegs.PCLKCR.bit.SCIAENCLK=0;

SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;

SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;

SysCtrlRegs.PCLKCR.bit.ADCENCLK=0;

SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;

SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;

EDIS;      //对寄存器加保护
}


interrupt void cpu_timer0_isr(void)

{
  CpuTimer0.InterruptCount++;
  PieCtrlRegs.PIEACK.bit.ACK1=1;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -