![]() |
试试这段程序,如果还是一样,可能是硬件问题 #include "sc92f7411.h" // 假设ADC模块的基地址为0x50000000 #define ADC_BASE 0x50000000 // ADC控制寄存器定义 #define ADC_CR1 *(volatile unsigned int *)(ADC_BASE) #define ADC_CR2 *(volatile unsigned int *)(ADC_BASE + 4) #define ADC_DR *(volatile unsigned short *)(ADC_BASE + 8) // ADC时钟使能(请根据实际情况修改) void ADC_ClockInit() { // ... } // ADC初始化 void ADC_Init() { ADC_ClockInit(); // 配置ADC控制寄存器 ADC_CR1 = 0x00; // 清除控制寄存器 ADC_CR2 = 0x00; // 清除控制寄存器 // 设置采样时间、通道等(根据数据手册配置) ADC_CR1 |= (1 << 12); // 设置采样时间 ADC_CR2 |= (3 << 0); // 选择通道3 // 使能ADC ADC_CR2 |= (1 << 0); } // 启动ADC转换 void ADC_StartConvert() { // 启动ADC转换 ADC_CR2 |= (1 << 3); } // 读取ADC转换结果 uint16_t ADC_ReadValue() { // 等待转换完成(可通过中断方式) // ... return ADC_DR; } |