Keil 5编写KEA128控制器的ADC程序并输出电压范围是0-13333V的电压值
以下是使用Keil 5编写KEA128控制器的ADC程序,并输出电压范围为0-1.3333V的电压值的示例代码。
#include <stdio.h>
#include "KEA128.h"
void ADC_Init(void) {
// 使能 ADC0 时钟
SIM->SCGC |= SIM_SCGC_ADC_MASK;
// 选择 ADC 分频器为分频8,提供 5MHz 时钟给 ADC
ADC0->CFG1 |= ADC_CFG1_ADIV(3);
// 选择 ADC 时钟源为总线时钟
ADC0->CFG1 |= ADC_CFG1_ADICLK(1);
// 选择 ADC 采样时间为长采样
ADC0->CFG1 |= ADC_CFG1_ADLSMP_MASK;
// 选择 ADC 分辨率为12位
ADC0->CFG1 |= ADC_CFG1_MODE(3);
// 选择 ADC 参考电压为外部引脚 VREFH 和 VREFL
ADC0->SC2 |= ADC_SC2_REFSEL(0);
// 使能 ADC 通道0
ADC0->SC1[0] |= ADC_SC1_ADCH(0);
}
float ADC_ReadVoltage(void) {
// 启动 ADC 转换
ADC0->SC1[0] |= ADC_SC1_ADCH(0);
// 等待转换完成
while (!(ADC0->SC1[0] & ADC_SC1_COCO_MASK));
// 读取 ADC 值
uint16_t adcValue = ADC0->R[0];
// 计算电压值
float voltage = ((float)adcValue / 4095) * 1.3333;
return voltage;
}
int main(void) {
// 初始化 ADC
ADC_Init();
while (1) {
// 读取电压值
float voltage = ADC_ReadVoltage();
// 输出电压值
printf("Voltage: %fV\n", voltage);
// 延时
for (int i = 0; i < 1000000; i++);
}
}
请注意,此示例代码假定已经正确配置了KEA128控制器的引脚和时钟设置以使用ADC功能。在使用之前,请确保正确初始化相关寄存器
原文地址: https://www.cveoy.top/t/topic/iyou 著作权归作者所有。请勿转载和采集!