☆华大HC32F003☆---ADC例程分享(不断更新中......)

阅读: 评论:0

☆华⼤HC32F003☆---ADC例程分享(不断更新中......)
样例使⽤说明
================================================================
版本历史
⽇期 版本 负责⼈ IAR MDK 描述
2017-06-07 0.1 虹芯侠客 7.70 5.16A first version
====================================
功能描述
本样例主要展⽰ADC 单通道连续采样⽰例,使⽤中断⽅式获取ADC运⾏状态。
说明:
配置ADC并开始采样,ADC中断发⽣标志连续转换完成,读取累加转换结果
☆ 本⽂旨在抛砖引⽟,其余具体使⽤欢迎加Q:3230875137或加164973950交流。
☆ 华⼤MCU单⽚机资料分享连接
====================================================================== ==========
测试环境
测试⽤板:
辅助⼯具:
⽰波器
电源
辅助软件:
====================================
提升装置
使⽤步骤
1)打开⼯程编译并运⾏
2)查看串⼝输出
====================================
注意
调试串⼝的使⽤:
调试串⼝在系统时钟使⽤⾼速晶振时可⽤,PIN为P35. 波特率为19200, 8N1.
================================================================
/****************************************************************************/
/ \file main.c
**
** A detailed description is available at
** @link Sample Group Some description @endlink
**
** - 2017-05-28 LiuHL First Version
**
******************************************************************************/
/******************************************************************************
Include files
******************************************************************************/
#include “adc.h”
#include “gpio.h”
/
******************************************************************************
Local pre-processor symbols/macros (’#define’)
******************************************************************************/
#define DEBUG_PRINT
66aaaa/******************************************************************************
Global variable definitions (declared in header file with ‘extern’) ******************************************************************************/
/******************************************************************************
Local type definitions (‘typedef’)
******************************************************************************/
/******************************************************************************
Local function prototypes (‘static’)
******************************************************************************/
/******************************************************************************
Local variable definitions (‘static’) *
******************************************************************************/
static stc_adc_irq_t stcAdcIrqFlag;
/*****************************************************************************
Function implementation - global (‘extern’) and local (‘static’) ******************************************************************************/
void AdcContIrqCallback(void)
{
// Adc_DisableIrq();
// Adc_ClrContIrqState();
stcAdcIrqFlag.bAdcIrq = TRUE;
}
void AdcRegIrqCallback(void)
{
// Adc_DisableIrq();
// Adc_ClrRegIrqState();
stcAdcIrqFlag.bAdcRegCmp = TRUE;
}
void AdcHhtIrqCallback(void)
{
// Adc_DisableIrq();
/
/ Adc_ClrHhtIrqState();
stcAdcIrqFlag.bAdcHhtCmp = TRUE;
}
void AdcLltIrqCallback(void)
{
// Adc_DisableIrq();
// Adc_ClrLltIrqState();
stcAdcIrqFlag.bAdcLltCmp = TRUE;
}
/**
** \brief Main function of project
**
** \return uint32_t return value, if needed母鸡接鸡蛋
**
** This sample
**
******************************************************************************/ int32_t main(void)
{
stc_adc_cfg_t stcAdcCfg;
stc_adc_cont_cfg_t stcAdcContCfg;
stc_adc_irq_t stcAdcIrq;
stc_adc_irq_calbakfn_pt_t stcAdcIrqCalbaks;
uint32_t u32AdcResultAcc;
DDL_ZERO_STRUCT(stcAdcCfg);
DDL_ZERO_STRUCT(stcAdcContCfg);
DDL_ZERO_STRUCT(stcAdcIrq);
DDL_ZERO_STRUCT(stcAdcIrqCalbaks);
DDL_ZERO_STRUCT(stcAdcIrqFlag);
Clk_SwitchTo(ClkXTH);
Clk_SetPeripheralGate(ClkPeripheralUart0, TRUE);
Clk_SetPeripheralGate(ClkPeripheralBt, TRUE);
Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);
#ifdef DEBUG_PRINT
Debug_UartInit();
#endif
if (Ok != Clk_SetPeripheralGate(ClkPeripheralAdcBgr, TRUE))
{
return 1;
}
printf("ADC continuous sampling INTR test start.\n");
Gpio_SetAnalog(2, 4, TRUE);
Gpio_SetAnalog(2, 6, TRUE);
// Gpio_SetAnalog(3, 5, TRUE);
//ADC配置
脚踩垃圾桶
Adc_Enable();
M0P_BGR->CR_f.BGR_EN = 0x1u;//BGR必须使能
M0P_BGR->CR_f.TS_EN = 0x1u;
delay100us(1);
攀藤网
// AdcRefVolSel = RefVolSelInBgr2p5;
// stcAdcCfg.bAdcInBufEn = TRUE;
stcAdcCfg.bAdcInBufEn = FALSE;
stcAdcCfg.bAdcInBufEn = FALSE;
Adc_Init(&stcAdcCfg);
stcAdcIrq.bAdcIrq = TRUE;
stcAdcIrq.bAdcRegCmp = FALSE;
stcAdcIrq.bAdcHhtCmp = FALSE;
stcAdcIrq.bAdcLltCmp = FALSE;
stcAdcIrqCalbaks.pfnAdcContIrq = AdcContIrqCallback; stcAdcIrqCalbaks.pfnAdcRegIrq = AdcRegIrqCallback; stcAdcIrqCalbaks.pfnAdcHhtIrq = AdcHhtIrqCallback;
stcAdcIrqCalbaks.pfnAdcLltIrq = AdcLltIrqCallback;
Adc_ConfigIrq(&stcAdcIrq, &stcAdcIrqCalbaks);
Adc_EnableIrq();
Adc_CmpCfg(&stcAdcIrq);
//AdcContModeCh = AdcAiTsInput;
stcAdcContCfg.u8AdcSampCnt = 0xFFu;
stcAdcContCfg.bAdcResultAccEn = TRUE;
Adc_ConfigContMode(&stcAdcCfg, &stcAdcContCfg);
while(1)
{
Adc_Start();//ADC开始转换
while(FALSE == stcAdcIrqFlag.bAdcIrq);
Adc_DisableIrq();
#ifdef DEBUG_PRINT
if (FALSE != stcAdcIrqFlag.bAdcIrq)
{
printf("Cont IRQ Fired!\n");
}
#endif
柔性电路Adc_GetAccResult(&u32AdcResultAcc);
Adc_ClrAccResult();
#ifdef DEBUG_PRINT
printf("CH: %d, SampCnt: 0x%X, AdcVal_acc: 0x%X, AdcVal_avg: 0x%X\n",            AdcContModeCh,
stcAdcContCfg.u8AdcSampCnt,
u32AdcResultAcc,
u32AdcResultAcc/(stcAdcContCfg.u8AdcSampCnt+1));
#endif
delay1ms(1000);
Adc_Init(&stcAdcCfg);
Adc_ConfigIrq(&stcAdcIrq, &stcAdcIrqCalbaks);
Adc_EnableIrq();
Adc_ConfigContMode(&stcAdcCfg, &stcAdcContCfg);
}
}
/
******************************************************************************
EOF (not truncated)
******************************************************************************/

本文发布于:2023-06-04 20:44:25,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/126264.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转换   采样   分享   版本   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图