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.
编译没有问题,但是只要加入DELAY_US(100),想实现的功能就实现不了。连矩阵按键控制LED灯亮灭都不行,主函数代码如下:
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#include "leds.h"
#include "key.h"
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
int i= 0;
char key = 0;
InitSysCtrl();
LED_Init();
KEY_Init();
while(1)
{
key = KEY_Scan(0);
switch(key)
{
case KEY1_PRESS: LED2_TOGGLE;break;
case KEY2_PRESS: LED3_TOGGLE;break;
case KEY3_PRESS: LED4_TOGGLE;break;
case KEY4_PRESS: LED5_TOGGLE;break;
case KEY5_PRESS: LED6_TOGGLE;break;
case KEY6_PRESS: LED7_TOGGLE;break;
}
i++;
if(i==2000)
{
i = 0;
LED1_TOGGLE;
}
DELAY_US(100);
}
}
实在不行可以换成delay_loop();
void delay_loop() { volatile long i; for (i = 0; i < 100; i++) {} }
前两天了论坛维护了,所以不能及时回您。您的方法确实能做到简单的延时,但是还是不如DELAY_US来得准确简单,我将程序中(包括.c .h)程序中的DELAY_US全部替换为for循环,我想要的功能就能正常实现了。 但还是不明白为什么DELAY_US用不了,我的文件库中也包括了DSP2833x_usDelay.asm 难道是我添加错了吗
前两天了论坛维护了,所以不能及时回您。我将程序中(包括.c .h)程序中的DELAY_US全部替换为for循环作为简单延时,我想要的功能就能正常实现了。 但还是不明白为什么DELAY_US用不了,我的文件库中也包括了DSP2833x_usDelay.asm 难道是我添加错了吗
void main()
{
int i=0;
float adc_vol;
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
LED_Init();
TIMER0_Init(150,200000);//200ms
SHUMAGUAN_Init();
//ADC_Init();
while(1)
{
// adc_vol=(float)Read_ADCValue()*3.0/4096;
SMG_DisplayFloat(15.20,2);
// SMG_DisplayInt(Read_ADCValue());
}
}
这是简单的ADC的主程序,当我把ADC_Init取消注释以后,后面的程序就不执行了。因为ADC_Init里有TI自带的函数 InitAdc(),里面用到了DELAY_US。当我把ADC_Init注释掉以后,后面的程序就能够执行了
实在抱歉,由于我刚开始接触DSP28335,所以一开始对问题描述地不是很清楚,在添加DSP2833x_MemCopy.c后就解决了 感谢您花费时间来回答我的问题 谢谢