Keil 5 编写 KEA128 控制器 ADC 程序,输出 0-1.3333V 电压值
Keil 5 编写 KEA128 控制器 ADC 程序,输出 0-1.3333V 电压值
以下是使用 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/qfAB 著作权归作者所有。请勿转载和采集!