📄 rtdx_829.c
字号:
#include <stdio.h>
#include "DSP28_Device.h" /* fprintf(), puts() */
#include <stdlib.h> /* abort() */
#include <rtdx.h> /* RTDX */
#include "target.h" /* TARGET_INITIALIZE() */
/* Declare and initialize an output channel called "ochan" */
RTDX_CreateOutputChannel(ochan);
RTDX_CreateInputChannel(ichan);
void main( void )
{
unsigned int i,j;
unsigned int recvd[10];
InitSysCtrl( ); //必要时,需要修改其中的相关寄存器配置,在使用时需查看;配置是否满足需求
//////////////////////////////////////////////////////////////////
// Initializing GPIO
EALLOW;
GpioMuxRegs.GPAMUX.all=0xffff; // 配置端口A,作为PWM clock和GPIO
GpioMuxRegs.GPADIR.all=0xffff;
GpioMuxRegs.GPAQUAL.all=0x0000;
GpioMuxRegs.GPEMUX.all=0x0003; // 配置端口E为外部中断XINT1,XINT2
GpioMuxRegs.GPEDIR.all=0x0003;
GpioMuxRegs.GPEQUAL.all=0x0000;
GpioMuxRegs.GPFMUX.all=0x0000;
GpioMuxRegs.GPFDIR.all=0x0005;
EDIS;
// GPIO Initialized OK !!!
///////////////////////////////////////////////////////////////////
//// Interrupt Control and Initializing ///////////////////////////
DINT;
IER=0x0000;
IFR=0x0000;
InitPieCtrl();
InitPieVectTable();
XIntruptRegs.XINT1CR.all=0x0001; // 允许外设中断,触发方式为负边沿
XIntruptRegs.XINT2CR.all=0x0001;
PieCtrl.PIEIER1.bit.INTx3=1;
PieCtrl.PIEIER1.bit.INTx4=1;
IER|=0x0001;
EINT;
//// Interrupt configured OK !!!
////////////////////////////////////////////////////////////////////
// GENERATE SQUARE SIGNAL: configure the T1 PR
EvaRegs.T1PR=0x0012; // Timer1 period
EvaRegs.T1CMPR=0x0008; // Timer1 compare
EvaRegs.T1CNT=0x0000; //Timer1 counter
EvaRegs.T1CON.all=0x9042;
EvaRegs.GPTCONA.all=0x0042;
////////////////////////////////////////////////////////////////////
TARGET_INITIALIZE();
RTDX_Init();
RTDX_enableOutput(&ochan);
RTDX_enableInput(&ichan);
rep: for ( i = 0; i < 100; i++ ) {
if ( !RTDX_write( &ochan, &i, sizeof(i) ) ) {
fprintf(stderr,
"\nError:%d RTDX_write() failed!\n",i);
abort();
}
while ( RTDX_writing != NULL ) {
#if RTDX_POLLING_IMPLEMENTATION
RTDX_Poll();
#endif
}
}
for(i=0;i<10;i++)
{
if ( (RTDX_read( &ichan, &recvd, sizeof(recvd) )) !=
sizeof(recvd) ) {
fprintf(stderr,
"\nError: RTDX_read() failed\n");
abort();
}
else {
for(j=0;j<10;j++)
{
fprintf(stdout,"recvd[%d]=%d",j,recvd[j]);
}
fprintf(stdout,"\n");
}
}
goto rep;
RTDX_disableOutput(&ochan);
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -