#define GLOBLE_VAR #include 'includes.h' //包含总头文件

//---------------------------------------------------------------------- //声明使用到的内部函数 //main.c使用的内部函数声明处 void Delay_ms(uint16_t u16ms); float Regression_Ext_Temp(uint16_t tmpAD); //环境温度AD值转为实际温度 float Regression_MCU_Temp(uint16_t mcu_temp_AD); //MCU温度AD值转为实际温度

//---------------------------------------------------------------------- //主函数,一般情况下可以认为程序从此开始运行(实际上有启动过程,参见书稿) int main(void) { //(1)======启动部分(开头)========================================== //(1.1)声明main函数使用的局部变量 uint32_t mMainLoopCount; //主循环次数变量 uint8_t mFlag; //灯的状态标志 uint32_t mCount; //延时的次数 uint32_t mLightCount; //灯的状态切换次数 uint16_t num_AD1; uint16_t num_AD2; uint16_t num_AD3; //(1.2)【不变】关总中断 DISABLE_INTERRUPTS;

//(1.3)给主函数使用的局部变量赋初值
mMainLoopCount=0;    //主循环次数变量
mFlag='A'; 
mLightCount=0;       //灯的闪烁次数
mCount=0;//记次数

//(1.4)给全局变量赋初值

//(1.5)用户外设模块初始化
gpio_init(LIGHT_BLUE,GPIO_OUTPUT,LIGHT_ON);	//初始化蓝灯
adc_init(ADC_CHANNEL_1,AD_SINGLE);			    //初始化ADC通道1,
//adc_init(ADC_CHANNEL_15,AD_SINGLE);			    //初始化ADC通道15
adc_init(ADC_CHANNEL_TEMPSENSOR,AD_SINGLE);	//初始化ADC通道:内部温度

emuart_init(UART_User,115200);
//(1.6)使能模块中断
uart_enable_re_int(UART_User);

//(1.7)【不变】开总中断
ENABLE_INTERRUPTS;

printf("------------------------------------------------------\n"); 
printf("金葫芦提示:                                           \n"); 
printf("(1)目的:ADC单端输入测试                              \n"); 
printf("(2)测试方法:手摸芯片表面,A/D值增大,不要摸到引脚,  \n");
printf("              静电可能损坏芯片                         \n");
printf("------------------------------------------------------\n"); 
 
//(1)======启动部分(结尾)==========================================

//(2)======主循环部分(开头)========================================
for(;;)   //for(;;)(开头)
{
    //(2.1)主循环次数变量+1
    mMainLoopCount++;
    //(2.2)未达到主循环次数设定值,继续循环
    //延时1秒
    if (mMainLoopCount<=3000000)  continue;
    //(2.3)达到主循环次数设定值,执行下列语句,进行灯的亮暗处理
    //(2.3.1)清除循环次数变量
    mMainLoopCount=0;
    //(2.3.2)如灯状态标志mFlag为'L',灯的闪烁次数+1并显示,改变灯状态及标志
	if (mFlag=='L')                    //判断灯的状态标志
	{
		mLightCount++;  
		mFlag='A';                       //灯的状态标志
		gpio_set(LIGHT_BLUE,LIGHT_ON);  //灯“亮”
		Delay_ms(1000);
	}
    //(2.3.3)如灯状态标志mFlag为'A',改变灯状态及标志
	else
	{
		mFlag='L';                       //灯的状态标志
		gpio_set(LIGHT_BLUE,LIGHT_OFF); //灯“暗”
		Delay_ms(1000);
	}
    num_AD1 = adc_median(ADC_CHANNEL_1,5);
    //num_AD2 = adc_median(ADC_CHANNEL_15,5);
    num_AD3 = adc_median(ADC_CHANNEL_TEMPSENSOR,5);
    printf("通道1(GEC47、46)的A/D值: %d\r\n",num_AD1);
    printf("内部温度传感器的A/D值:%d\r\n\n",num_AD3);
    mCount++;      
}
ADC 单端输入测试 - 中值滤波和均值滤波

原文地址: https://www.cveoy.top/t/topic/oaCS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录