This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8377万S:中断:设置

Guru**** 2124380 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/574766/tms320f28377s-interrupts-setup

部件号:TMS320F2.8377万S

大家好,

我目前正在与Delfino一起处理一个项目,在测试中断时遇到了问题。 我设置了代码。每次GPIO引脚17接收到高水平的方波输入时,GPIO引脚18 (输出)将从0切换为1。 下面是我的代码。 我还想知道我的函数生成器是否已正确设置用于此目的。 我有3.2 Vpp用于方波,1.5 V偏移量为30 us。 此外,输入前还有一个4.7K下拉电阻器。

#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <file.h>

#include "F28x_Project.h" // DSP28x Headerfile
#include "ti_ascii.h"
#include "sci_io.h"
//risy

//#include "Device.h"
//#include "F2837xD_examples.h"
//#####################################################################################################################################################################################################################################################################################################28#28#28#28#28
//在main函数之前,项目中使用的全局变量。 宣布其他 //代码的此部分中的变量。
//###################################################################

UINT16 *小工具包;//全局指针小工具包
UINT16位= 3;//test bit已随机初始化
UINT16 bit_done_flag = 0;//flag,表示中断已采用
//################################################
//声明服务例程和函数
//#####################################################################################################

中断void XINT1_ISR(void);
//中断void CPU_timer0_ISR(void);
//中断void isr1(void);
// void program1(void);
// void program2(void);


//#################### 主代码###################的开头


//void main(void)
void main()
{//


初始化系统控制://
pll, watchdog,启用外设时钟
//此示例函数可在F2837xD_sysctrl.c文件中找到。
InitSysCtrl();//


清除所有中断并初始化PIE矢量表:
//禁用CPU中断
dint;

//将PIE控制寄存器初始化为其默认状态。
//默认状态是禁用所有PIE中断,
并清除标志//。
//此函数位于F2837xD_PIECTRL.c文件中。
InitPieCtrl();//

禁用CPU中断并清除所有CPU中断标志:
IER = 0x0000;
IFR = 0x0000;

//使用指向shell Interrupt
//服务例程(ISR)的指针初始化PIE矢量表。
//这将填充整个表,即使在此
示例中未使用中断//。 这对于调试非常有用。
// shell ISR例程位于F2837xD_DefaultIsr.C.中
//此函数位于F2837xD_PieVect.C.中
InitPieVectorTable();
//启用全局中断和更高优先级的实时调试事件:
// EINT;//启用全局中断INTM

//ERTM;//启用全局实时中断DBGM



//###################################################################
//用户特定代码:您的代码出现在此处。
//###################################################################





EALLOW;
PieVectorTable.XINT1_INT =&XINT1_ISR;
EDIS;

EALLOW;


gpioCtrlRegs.GPAQSEL2.bit.GPIO17=1;
gpioCtrlRegs.GPACTRL.bit.QUALPRD2 = 200;
//输入
GpioCtrlRegs.GPAGMUX2.bit.GPIO17 = 0;
GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 0; // GPIO 46
gpioCtrlRegs.GPADIR.bit.GPIO17 = 0; //输入
//GpioCtrlRegs.GPAINV.Bit.GPIO17 = 1;

//输出探头
GpioCtrlRegs.GPAGMUX2.bit.GPIO18 = 0;
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0; // GPIO 46
gpioCtrlRegs.GPADIR.bit.GPIO18 = 1; //输出
GpioDataRegs.GPASET.bit.GPIO18 = 0;

GPIO_SetupXINT1Gpio(17);


XintRegs.XINT1CR.bit.Polarity = 0;
XintRegs.XINT1CR.bit.enable =1;

PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
IER |= M_INT1;
EDIS;
EINT;








for(;){

	DELAY _US(1);
	UINT16 A = GpioDataRegs.GPADAT.bit.GPIO18;




}




}//#######################







功能开始代码##############




//####################### 中断服务例程##############

//interrupt void XINT1_ISR(&*Kittens)
//interrupt void XINT1_ISR()
interrupt void XINT1_ISR(void)
{
	EALLOW;
*kittens =0;
DELAY _US (100万);
GpioDataRegs.GPATOGLE.bit.GPIO18 = 1;

/*//while (!GpioDataRegs.GPBDAT.bit.GPIO46){/2/4 change
while (!GpioDataRegs.GPBDAT.bit.GPIO46){
DELAY _US (1);
小猫++;
*/
EDIS;


bit_done_flag=1;//查看是否触发中断的简单标志
PieCtrlRegs.PIEACK_ALL = PIEACK_Group1;

}/*interrupt
void CPU_timer0_ISR(void){
//CpuTimer0Regs.tcr.bit.trb = 1;

GpioDataRegs.GPBSET.bit.GPIO41 = 1;
//Delay_US (300万);
DELAY _US (1);
GpioDataRegs.GPBCLEAR.bit.GPIO41 = 1;
PieCtrlRegs.PIEACG.ALL = PIEACK_GROUP1;


//toggle
}
*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Henry,您面临的问题是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    假定您能够解决此问题,则关闭开机自检。 如果您仍然遇到问题,请重新打开此邮件或开始新的帖子。