工具/软件: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); } }