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:ADC 初始化问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/592749/ccs-ek-tm4c1294xl-adc-initialization-problem

器件型号:EK-TM4C1294XL

工具/软件:Code Composer Studio

我必须从 Tiva 为 ADC 制作一个程序、但我不能使用 stdbool 和 stdint 以外的库。 这里是我的代码、当我尝试对其进行调试时、它会在我想要检查转换是否完成时出现问题。
该程序旨在使用微处理器中的温度传感器。

#include 
#include 

#define SYSCTL_RCGCGPIO_R (*((volatile UINT32_t *) 0x400FE608)
#define SYSCTL_PRGPIO_R (*((volatile UINT32_t *) 0x400FEA08)
#define SYSCTL_RCGCADC_R (*((volatile UINT32_t *) 0x400FE638)
)#define SYSCTL_PRADC_R (*((volatile uint32_t *) 0x400FEA38)

#define ADC0_PC_R (*((volatile uint32_t *) 0x40038FC4)
#define ADC0_SSPRI_R (*((volatile uint32_t *) 0x40038020)
#define ADC0_ACTSS_R (*((volatile uint32_t *) 0x40038000)
#define ADC0_EMUX_R (*((volatile uint32_t *) 0x40038014)
)#define ADC0_SSEMUX3_R (*((volatile uint32_t *) 0x400380B8)
)#define ADC0_SSMUX3_R (*((volatile uint32_t *) 0x400380A0)
#define ADC0_SSCTL3_R (*((volatile uint32_t *) 0x400380A4)
#define ADC0_IM_R (*((volatile uint32_t *) 0x40038008)
#define ADC0_ACTSS_R (*((volatile uint32_t *) 0x40038000)
#define ADC0_ISC_R (*((volatile uint32_t *) 0x4003800C)
#define ADC0_PSSI_R (*((volatile uint32_t *) 0x40038028)
#define ADC0_RIS_R (*((volatile uint32_t *) 0x40038004)
)#define ADC0_SSFIFO3_R (*((volatile uint32_t *) 0x400380A8)


void main (void){
SYSCTL_RCGCADC_R = 0x01;// ADC 时钟启用
while ((SYSCTL_PRADC_R&0x01)=0);//时钟启用延迟

ADC0_PC_R = 0x01; // 125Ksamp/s
ADC0_SSPRI_R = 0x0123;// SS3具有最高优先级
ADC0_ACTSS_R = 0x0000;//在配置前禁用 SS3
ADC0_EMUX_R = 0x0000;//对采样启用软件
ADC0_SSEMUX3_R = 0x00;//引脚 AIN (15:0)
ADC0_SSMUX3_R =(ADC0_SSMUX3_R 和0xFFFFFFF0)+ 9;// AIN9通道
ADC0_SSCTL3_R = 0x000E;//启用温度传感器、INR3使能、结束序列;无二进制模式
ADC0_IM_R = 0x0000; //禁用 SS3中断
ADC0_ACTSS_R |= 0x0008;//启用 SS3

ADC0_ISC_R = 0x0008;//清除标志
while{
uint32_t ADC_Result;
浮动温度;
ADC0_PSSI_R = 0x0008; //开始转换
while (((ADC0_RIS_R & 0x08)=0);//始终停留在此处
ADC_Result =(ADC0_SSFIFO3_R 和0xFFF);//将转换结果保存为 ADC_Result
ADC0_ISC_R = 0x0008; //清除标志

温度= 147.5 -(((75 *(3.3)* ADC_Result)/ 4096);
}
} 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您使用的是 DRM、不建议这样做。 由于您不使用 TivaWare 库、因此很难进行调试。 我想您转到 CCS Register 浏览器窗口、观察是否根据数据表正确配置了所有寄存器(即、是否启用了 SS3)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    100%同意供应商的 Charles - DRM 是(一种)方法-但事实证明效率极低、浪费时间-而且大多数情况下都是"无法正常工作!" 然而、某些"讲师"声称这"帮助学习!"

    您可以询问讲师、"是否(非常)晚到市场-始终是此类 DRM (仅限)使用的结果-让学生"招聘?"放心 作为成功的小型技术企业所有者(合作成立-接管了技术公司 Public)-我们不允许您使用 DRM!    (我们与之互动的所有其他技术公司都同意这一观点)

    与此形成鲜明对比的是、供应商的"成熟、真实、广泛的 API"最能让我们的公司和多个其他公司"保持我们的大门敞开!"   "那"是目前为止最关键的学习!

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

    [引用 user="user4904668"]但我不能使用 stdbool 和 stdint[/quot]以外的库

    在这种情况下、您需要向强加给您该指令的任何人投诉。 他是向你扔火焰的人、因此他必须帮助弄清楚你的准则为什么不起作用。

    PS:您可以告诉该人"工程师正在告诉您使用驱动程序库!"

    对于该特定器件、此类驱动程序库称为 TivaWare。

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

    [引用 USER="CB1_MOBILE "]特定的"讲师"

    有危险认可"无法教授的人"这一说法... 我不是特别同意这一点。

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

    有些-(但绝不是 Moi)-(可能)已经指出、"工作安全"是阻止其收费搜索、查找、然后(有效)利用"最佳实践"方法、技术和久经考验的技术帮助/速度的主要激励因素!

    添加了无尽的 MCU 手册、"页面排名和"深度潜水"寄存器考试"-同时"完全避免"已尝试/真正的 API -在这里或在"现实世界!"中都毫无意义

    完全可以使用 API (同时)检查 MCU 寄存器-并打印出关键寄存器页面-准备好-来加快/简化学生学习。    然而、这种"混合技术"从未提到过。 (从未出现在此处)

    作为小型技术企业所有者、我们必须始终"检查我们的方法-什么有效-失败-可以更有效地完成?"   这必然会导致变化!    因此,突出了一个明显的问题:"课程教学大纲(同样)是否改变、保持不变,力求最大限度地提高学生价值?"   如果不是-为什么不呢?

    当然,"教官"最好地把教义与两种方法的最佳/适当结合起来!     (为什么这种明显的建议源于"学术界外部"?)