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.

[参考译文] CCS/EK-TM4C1294XL:不触发模数转换中断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/567403/ccs-ek-tm4c1294xl-analog-to-digital-conversion-interrupt-not-triggered

器件型号:EK-TM4C1294XL

工具/软件:Code Composer Studio

您好!


我使用的是 TM4C1294XL 电路板、我尝试使用中断来检索 ADC 的结果、而不是等待。 我使用 CCS 和 driverlib 代码来配置电路板。 我的第一个代码执行了手动触发、以转换并在 PuTTy 上显示内部温度。 因此 UART0和 ADC 配置有效。 我现在尝试使用始终采样和中断来检索结果、而不是等待。 但无法使中断正常工作。 请帮帮我。 这是 startups_ccs 的代码 a main.c 和。 我不会在 UART 代码运行时发布它。

main.c

void ADC0seq3_Handler (void){
uint32_t ADC0Value[1];
volatile unsigned long TempValue;
ADCSequenceDataGet (ADC0_BASE、3、ADC0Value);
TempValue =(1475 -(2475 * ADC0Data[0]))/4096)/10;
UARTf ("UARTprintf"("UCTRE"
);ADCprintf ("3D

= UCTREASE); 3);
}

int main (void){

//Init 使用 ADC0和序列3。
ADCSequenceDisable (ADC0_BASE、3);
IntMasterDisable ();
IntDisable (INT_ADC0SS3_TM4C129);
ADCIntDisable (ADC0_BASE、 3);

SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_ADC0)){
//等待模块就绪。
}

ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PIOSC | ADC_CLOCK_RATE_FULL、1);
ADCSequenceConfigure (ADC0_BASE、3、 ADC_TRIGGER_AUSE, 0);
ADCSequenceStepConfigure (ADC0_BASE,3,0, ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END);

IntEnable (INT_ADC0SS3_TM4C129);
ADCIntClear (ADC0_BASE、3);
ADCIntEnable (ADC0_BASE、 3);
IntMasterEnable();
ADCSequenceEnable (ADC0_BASE,3);//启用序列发生器 ADC0 seq3。

while (1){
//此处应发生中断
}

返回0;
} 

这是我的 startup_ccs 文件

extern void ADC0seq3_Handler (void);

#pragma DATA_SECTION (g_pfnVectors、".intvecs")
void (* const g_pfnVectors [])(void)=
{
(void (*)(void)((uint32_t)&_stack_top)、
//初始堆栈指针
ResetISR、 //重置处理程序
NmiSR、 // NMI 处理程序
FaultISR、 //硬故障处理程序
IntDefaultHandler、 // MPU 故障处理程序
IntDefaultHandler、 //总线故障处理程序
IntDefaultHandler、 //用法故障处理程序
0、 //保留
0、 //保留
0、 //保留
0、 //保留
IntDefaultHandler、 // SVCall 处理程序
IntDefaultHandler、 //调试监视器处理程序
0、 //保留
IntDefaultHandler、 // PendSV 处理程序
IntDefaultHandler、 // SysTick 处理程序
IntDefaultHandler、 // GPIO 端口 A
IntDefaultHandler、 // GPIO 端口 B
IntDefaultHandler、 // GPIO 端口 C
IntDefaultHandler、 // GPIO 端口 D
IntDefaultHandler、 // GPIO 端口 E
IntDefaultHandler、 // UART0 Rx 和 Tx
IntDefaultHandler、 // UART1 Rx 和 Tx
IntDefaultHandler、 // SSI0 Rx 和 Tx
IntDefaultHandler、 // I2C0主机和从机
IntDefaultHandler、 // PWM 故障
IntDefaultHandler、 // PWM 发生器0
IntDefaultHandler、 // PWM 发生器1
IntDefaultHandler、 // PWM 发生器2.
IntDefaultHandler、 //正交编码器0
IntDefaultHandler, // ADC 序列0
IntDefaultHandler、 // ADC 序列1
IntDefaultHandler、 // ADC 序列2
ADC0seq3_Handler、 // ADC 序列3.
IntDefaultHandler、 //看门狗计时器
IntDefaultHandler、 // Timer 0子计时器 A
IntDefaultHandler、 // Timer 0子计时器 B
IntDefaultHandler、 //计时器1子计时器 A
IntDefaultHandler、 //计时器1子计时器 B
IntDefaultHandler、 //计时器2子计时器 A
IntDefaultHandler、 //计时器2子计时器 B
IntDefaultHandler、 //模拟比较器0
IntDefaultHandler、 //模拟比较器1
IntDefaultHandler、 //模拟比较器2.
IntDefaultHandler、 //系统控制(PLL、OSC、BO)
IntDefaultHandler、 //闪存控制
IntDefaultHandler、 // GPIO 端口 F
IntDefaultHandler、 // GPIO 端口 G
IntDefaultHandler、 // GPIO 端口 H
IntDefaultHandler、 // UART2 Rx 和 Tx
IntDefaultHandler、 // SSI1 Rx 和 Tx
IntDefaultHandler、 //计时器3子计时器 A
IntDefaultHandler、 //计时器3子计时器 B
IntDefaultHandler、 // I2C1主设备和从设备
IntDefaultHandler、 // CAN0
IntDefaultHandler、 // CAN1
IntDefaultHandler、 //以太网
IntDefaultHandler、 //休眠
IntDefaultHandler、 // USB0
IntDefaultHandler、 // PWM 发生器3.
IntDefaultHandler、 // uDMA 软件传输
IntDefaultHandler、 // uDMA 错误
IntDefaultHandler、 // ADC1序列0
IntDefaultHandler、 // ADC1序列1
IntDefaultHandler、 // ADC1序列2.
IntDefaultHandler、 // ADC1序列3.
IntDefaultHandler、 //外部总线接口0
IntDefaultHandler、 // GPIO 端口 J
IntDefaultHandler、 // GPIO 端口 K
IntDefaultHandler、 // GPIO 端口 L
IntDefaultHandler、 // SSI2 Rx 和 Tx
IntDefaultHandler、 // SSI3 Rx 和 Tx
IntDefaultHandler、 // UART3 Rx 和 Tx
IntDefaultHandler、 // UART4 Rx 和 Tx
IntDefaultHandler、 // UART5 Rx 和 Tx
IntDefaultHandler、 // UART6 Rx 和 Tx
IntDefaultHandler、 // UART7 Rx 和 Tx
IntDefaultHandler、 // I2C2主设备和从设备
IntDefaultHandler、 // I2C3主设备和从设备
IntDefaultHandler、 //计时器4子计时器 A
IntDefaultHandler、 //计时器4子计时器 B
IntDefaultHandler、 //计时器5子计时器 A
IntDefaultHandler、 //计时器5子计时器 B
IntDefaultHandler、 // FPU
0、 //保留
0、 //保留
IntDefaultHandler、 // I2C4主设备和从设备
IntDefaultHandler、 // I2C5主设备和从设备
IntDefaultHandler、 // GPIO 端口 M
IntDefaultHandler、 // GPIO 端口 N
0、 //保留
IntDefaultHandler、 //改动
IntDefaultHandler、 // GPIO 端口 P (摘要或 P0)
IntDefaultHandler、 // GPIO 端口 P1
IntDefaultHandler、 // GPIO 端口 P2
IntDefaultHandler、 // GPIO 端口 P3
IntDefaultHandler、 // GPIO 端口 P4
IntDefaultHandler、 // GPIO 端口 P5
IntDefaultHandler、 // GPIO 端口 P6
IntDefaultHandler、 // GPIO 端口 P7
IntDefaultHandler、 // GPIO 端口 Q (摘要或 Q0)
IntDefaultHandler、 // GPIO 端口 Q1
IntDefaultHandler、 // GPIO 端口 Q2
IntDefaultHandler、 // GPIO 端口 Q3
IntDefaultHandler、 // GPIO 端口 Q4
IntDefaultHandler、 // GPIO 端口 Q5
IntDefaultHandler、 // GPIO 端口 Q6
IntDefaultHandler、 // GPIO 端口 Q7
IntDefaultHandler、 // GPIO 端口 R
IntDefaultHandler、 // GPIO 端口 S
IntDefaultHandler、 // SHA/MD5 0
IntDefaultHandler、 // AES 0
IntDefaultHandler、 // DES3DES 0
IntDefaultHandler、 // LCD 控制器0
IntDefaultHandler、 //计时器6子计时器 A
IntDefaultHandler、 //计时器6子计时器 B
IntDefaultHandler、 //计时器7子计时器 A
IntDefaultHandler、 // Timer 7子计时器 B
IntDefaultHandler、 // I2C6主从设备
IntDefaultHandler、 // I2C7主设备和从设备
IntDefaultHandler、 // HIM 扫描矩阵键盘0
IntDefaultHandler、 //单线0
IntDefaultHandler、 // HIM PS/2 0
IntDefaultHandler、 // HIM LED 序列发生器0
IntDefaultHandler、 // HIM 消费者 IR 0
IntDefaultHandler、 // I2C8主设备和从设备
IntDefaultHandler、 // I2C9主设备和从设备
IntDefaultHandler // GPIO 端口 T
};

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

    您将立即遇到的一个问题是、1MSPS 采样率会触发。 这意味着每次转换1us。 但是、中断例程具有较慢的 UARTprintf 函数调用。 因此、ADC 中断处理程序将始终使 CPU 在输出上遇到无法预测的结果。

    其次、在代码中没有 UART 初始化。 因此、我更怀疑第一次访问 UART 功能时发生的总线故障。