gd32f103 adc通道说明

2023-11-02

/*!
\file main.c
\brief ADC Temperature Vrefint demo
*/

/*
Copyright © 2017 GigaDevice
2017-06-23, V1.0.0, demo for GD32F30x
*/

#include “gd32f30x.h”
#include “gd32f303c_eval.h”
#include “systick.h”
#include <stdio.h>
//定义13通道
#define BOARD_ADC_CHANEL ADC_CHANNEL_13
//c组 gpio

#define ADC_GPIO_PORT GPIOC
//第三个gpio
#define ADC_GPIO_PIN GPIO_PIN_3
//pos机 pa1 1.29v pa2 1.46v pa3 3.3v
//刚好对比代码执行正常
//IN0 :PA0 IN1: PA1 IN2 :PA2 IN3:PA3
//5组数值
uint16_t adc_value[5];
//float temperature;
//校验值 为 浮点数
float vref_value;

void rcu_config(void);
void gpio_config(void);
void dma_config(void);
void adc_config(void);

/*!
\brief main function
\param[in] none
\param[out] none
\retval none
*/
int main(void)
{

int i;
/* system clocks configuration */
rcu_config();
/* configure systick */
systick_config();  
/*GPIO configuration*/
  gpio_config();
/* ADC configuration */
adc_config();
/* USART configuration */
//串口1 传输
gd_eval_com_init(EVAL_COM1);
while(1){
	dma_config();
   //软件触发启用
	adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);     //规则通道
/* delay a time in milliseconds */
delay_1ms(2000);
  
 /* value convert  */
 //  temperature = (1.43 - ADC_IDATA0(ADC0)*3.3/4096) * 1000 / 4.3 + 25;
		for ( i=0;i<5;i++){
		     vref_value = adc_value[i] * 3.3 / 4096;
			   printf("%5.3fV ", vref_value);
       
		}
		printf("\r\n");

  
 /* value print */
 //  printf(" the temperature data is %2.0f degrees Celsius\r\n", temperature);

}

}

/*!
\brief configure the different system clocks
\param[in] none
\param[out] none
\retval none
/
void rcu_config(void)
{
/
enable GPIOA clock */
//a c 组 时钟开启
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOA);

/* enable ADC clock */
//adc时钟开启
rcu_periph_clock_enable(RCU_ADC0);
/* config ADC clock */
//时钟分频
rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6);
  /* enable DMA0 clock */
  //dma时钟开启
rcu_periph_clock_enable(RCU_DMA0);

}

/*!
\brief configure the ADC peripheral
\param[in] none
\param[out] none
\retval none
*/

void gpio_config(void)
{
/* config the GPIO as analog mode */
//gpio 设为模拟量输入模式
gpio_init(ADC_GPIO_PORT, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, ADC_GPIO_PIN);
gpio_init(GPIOA,GPIO_MODE_AIN,GPIO_OSPEED_50MHZ,GPIO_PIN_0);
gpio_init(GPIOA,GPIO_MODE_AIN,GPIO_OSPEED_50MHZ,GPIO_PIN_1);
gpio_init(GPIOA,GPIO_MODE_AIN,GPIO_OSPEED_50MHZ,GPIO_PIN_2);
gpio_init(GPIOA,GPIO_MODE_AIN,GPIO_OSPEED_50MHZ,GPIO_PIN_3);
}

void dma_config(void)
{
/* ADC_DMA_channel configuration */
dma_parameter_struct dma_data_parameter;

/* ADC DMA_channel configuration */
dma_deinit(DMA0, DMA_CH0);

/* initialize DMA single data mode */
dma_data_parameter.periph_addr  = (uint32_t)(&ADC_RDATA(ADC0));
dma_data_parameter.periph_inc   = DMA_PERIPH_INCREASE_DISABLE;
dma_data_parameter.memory_addr  = (uint32_t)(&adc_value);
dma_data_parameter.memory_inc   = DMA_MEMORY_INCREASE_ENABLE;
dma_data_parameter.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;
dma_data_parameter.memory_width = DMA_MEMORY_WIDTH_16BIT;  
dma_data_parameter.direction    = DMA_PERIPHERAL_TO_MEMORY;
//5组数值
dma_data_parameter.number       = 5;
dma_data_parameter.priority     = DMA_PRIORITY_HIGH;
dma_init(DMA0, DMA_CH0, &dma_data_parameter);
dma_circulation_disable(DMA0, DMA_CH0);
	dma_memory_to_memory_disable(DMA0, DMA_CH0);
		/* enable DMA channel */
dma_channel_enable(DMA0, DMA_CH0);

}
void adc_config(void)
{
/* reset ADC /
adc_deinit(ADC0); //复用ADC外设
/
ADC mode config /
adc_mode_config(ADC_MODE_FREE); //配置ADC同步模式
/
ADC contineous function enable /
adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, DISABLE); // ADC连续模式使能
/
ADC scan mode disable /
adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE);
/
ADC data alignment config /
adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT); //ADC数据右对齐配置
/
ADC channel length config */
adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 5); //ADC通道长度配置 w五路通道

/* ADC regular channel config */       //规则通道配置
//每个adc端口 设置扫描模式
adc_regular_channel_config(ADC0, 4,  ADC_CHANNEL_0 , ADC_SAMPLETIME_55POINT5);//采样时间;55.5个ADC工作周期
  adc_regular_channel_config(ADC0, 3,  ADC_CHANNEL_1 , ADC_SAMPLETIME_55POINT5);
  adc_regular_channel_config(ADC0, 2,  ADC_CHANNEL_2 , ADC_SAMPLETIME_55POINT5);
  adc_regular_channel_config(ADC0, 1,  ADC_CHANNEL_3 , ADC_SAMPLETIME_55POINT5);
  adc_regular_channel_config(ADC0, 0,  BOARD_ADC_CHANEL, ADC_SAMPLETIME_55POINT5);
/* ADC trigger config */
adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);//触发条件 none是不使用外部触发,只使用软件触发
adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);   //配置adc外部触发

/* enable ADC interface */
adc_enable(ADC0);
delay_1ms(1);
/* ADC calibration and reset calibration */
adc_calibration_enable(ADC0);
	/* ADC DMA function enable */
adc_dma_mode_enable(ADC0);

}

/* retarget the C library printf function to the USART */

//将数据 发送到串口显示
int fputc(int ch, FILE *f)
{
usart_data_transmit(EVAL_COM1, (uint8_t) ch);
while (RESET == usart_flag_get(EVAL_COM1,USART_FLAG_TBE));
return ch;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gd32f103 adc通道说明 的相关文章

  • MapReduce之KNN算法

    MapReduce之KNN算法 什么是 K K K 邻近算法 KNN KNN分类问题是找出一个数据集中与一个给定查询数据点最近的 k k k个数据点 这个操作也称KNN连接 定义为 给定两个数据集
  • svn清除不成功的解决办法(cleanup失败)

    使用工具 sqlite3 exe 32位下载地址 https download csdn net download songxinfeng1989 10500196 64位下载地址 https download csdn net downl
  • FreeRTOS软件定时器创建、复位、开始和停止(备忘)

    目录 一 简介 1 1 开发环境 1 2 摘要 二 STM32CubeIDE配置 三 创建定时器 3 1 头文件声明 3 2 工程文件定义 3 3 创建定时器 3 4 开启 复位 和关闭定时器 四 定时器回调函数 一 简介 1 1 开发环境
  • js调用摄像头拍照并兼容ie浏览器

    不会吧不会吧 现在都2023年了竟然还有人在用ie浏览器 文章内容有点长 耐心看完 基本上能遇到的问题 都记录在这里了 问题1 调用摄像头并兼容ie浏览器 用户调用摄像头一般使用navigator mediaDevices 在ie浏览器这个
  • Netty客户端断线重连实现及问题思考

    前言 在实现TCP长连接功能中 客户端断线重连是一个很常见的问题 当我们使用netty实现断线重连时 是否考虑过如下几个问题 如何监听到客户端和服务端连接断开 如何实现断线后重新连接 netty客户端线程给多大比较合理 其实上面都是笔者在做
  • ::和.的区别

    作用域运算符 和 成员运算符 的区别 这是在看 运算符的作用时产生的疑问 有三个作用 1 全局作用 2 类作用 3 名称空间 1和3不多说 在2中 其说明是 作用域符号 的前面一般是类名称 后面一般是该类的成员名称 C 为了避免不同的类有名

随机推荐

  • Keil-MDK解决“Error: Encountered an improper argument”问题

    Keil MDK解决 Error Encountered an improper argument 问题 ARM官方问题描述及解决办法 https developer arm com documentation ka004382 lates
  • android环境配置

    JDK配置 JRE问题 Windows 打开PowerShell 进入JDK目录 执行 bin jlink exe module path jmods add modules java desktop output jre 环境变量 系统环
  • [STM32F10x] 利用定时器测量脉冲宽度

    硬件 STM32F103C8T6 平台 ARM MDk V5 11 前面一篇文章讲过如何利用定时器测量信号的频率 见 STM32F10x 利用定时器测量频率 使用的是定时器的捕获 比较单元 Capture compare 它也可以测量输入信
  • JDBC中的几个常见问题

    JDBC中的几个常见问题 1 JDBC中的Statement和PreparedStatement CallableStatement的区别 2 JDBC中大数据量分页的解决方法 3 事务 4 execute executeQuery exe
  • VS Code 格式化后 自动让函数名后有空格

    fetchCommentCount 像这样fetchCommentCount和 之间有空格 这是我们的目标 return 只需要在Vscode设置文件Settings中加入以下两句 vetur format defaultFormatter
  • 使用yum命令不能安装mysql的问题(No package mysql-server available. Error: Nothing to do)

    问题 这是因为本地yum仓库中没有对应的mysql包 所以在安装之前先要配置rpm包 这里使用的是mysql5 7的rpm rpm ivh https repo mysql com mysql57 community release el7
  • char类型的大小范围

    要知道char类型的大小范围 首先要知道char类型占1个字节 而1个字节等于8个bit位 每一个bit位是一位二进制数 所以char类型有8个二进制位 那么就有2的8次方256种可能 我们先讨论 signed char 有符号 首位是符号
  • IOS键盘的相关设置(UITextfield)

    http blog sina com cn s blog 7018d3820101djut html 一 键盘风格 UIKit框架支持8种风格键盘 typedef enum UIKeyboardTypeDefault 默认键盘 支持所有字符
  • Java基础笔记(初学者适用)

    目录 一 Java主函数解析 二 Java学习注意事项 三 JDK和JRE的区别 1 jdk 开发环境 核心 2 jre 运行环境 3 JVM 转换环境 四 常见转义字符 五 变量 1 变量介绍 2 变量细节 3 作用域 4 数据类型 1
  • 粤嵌实训(笔记)

    目录 1 LCD换自己喜欢的颜色 2 LCD换个图案 3 LCD换张图片 4 网线登录 ifconfig eth0 192 168 5 9 5 触屏电子相册 6 网络编程 TCP通信 7 网络编程 UDP通信 8 开发板串口通信MCU 32
  • 二叉树与二叉搜索树的理解

    树 tree 是一种抽象数据类型 ADT 用来模拟具有树状结构性质 它是由n n 0 个有限节点通过连接它们的边组成具有层次关系的集合 把它叫做树是因为它看起来像一棵倒挂的树 也就是说它是根朝上 而叶朝下的 树由多种 一个节点有两个以上子节
  • 快速训练ai作画模型的python代码

    感谢你的问题 如果你想快速训练一个 AI 作画模型 你可以使用开源的深度学习框架 例如 TensorFlow PyTorch 或 Keras 这里是一个基于 TensorFlow 的示例代码 它使用了一种叫做 CycleGAN 的生成对抗网
  • 使用 ESP-Prog / Jlink 进行 JTAG 调试时的常见错误及解决办法

    此篇博客用来记录使用 ESP PROG Jlink 来对 ESP32 Lyrat 进行 JTAG 调试时遇到的一些问题以及解决办法 如果对进行 JTAG 相关操作有疑惑 请参考以下资料 使用 ESP Prog 进行 JTAG 调试 使用 J
  • openmediavault配置文件共享

    OpenMediaVault是一个基于Debian的专用Linux发行版 用于构建网络连接存储 NAS 系统 它提供了一个易于使用的基于Web的界面 多语言支持 卷管理 监控和插件系统 以通过LDAP Bittorrent和iSCSI功能进
  • 多维时序

    多维时序 MATLAB实现RBF径向基神经网络多变量时间序列未来多步预测 目录 多维时序 MATLAB实现RBF径向基神经网络多变量时间序列未来多步预测 预测效果 基本介绍 模型描述 程序设计 参考资料 预测效果 基本介绍 MATLAB实现
  • 你会使用GROUP BY吗?

    职业开始前两年 发现面试特别喜欢问SQL的问题 觉得不够高大上 觉得没有框架什么的高大上 但是当你处理实际的业务问题 发现SQL是避免不了的 SQL可以帮你解决一些你在代码上处理逻辑很麻烦的地方 即时现在有mybatis插件 可以不用写SQ
  • Stable Diffusion下载完身体有点吃不消(内附秋叶集合安装包)

    大家好 今天我来介绍一款令人惊叹的开源软件 Stable Diffusion 这是一款基于AI技术的图片生成软件 可以让用户轻松随心所欲地创建出各种令人惊叹的图片 在这里插入图片描述 Stable Diffusion拥有强大的AI算法 不管
  • 一文看懂随机森林 - Random Forest(附 4 个构造步骤+10 个优缺点)

    本文首发自 产品经理的人工智能知识库 原文地址 一文看懂随机森林 Random Forest 附 4 个构造步骤 10 个优缺点 随机森林是一种由决策树构成的集成算法 他在很多情况下都能有不错的表现 本文将介绍随机森林的基本概念 4 个构造
  • 外包公司“混”了2年,我只认真做了5件事,如今顺利拿到阿里 Offer。

    前言 是的 我一家外包公司工作了整整两年时间 在入职这家公司前 也就是两年前 我就开始规划了我自己的人生 所以在两年时间里 我并未懈怠 现如今 我已经跳槽到了阿里 顺利拿下 offer 自己的情况很普通 本科文凭 没有背景 分享这次我的经历
  • gd32f103 adc通道说明

    file main c brief ADC Temperature Vrefint demo Copyright 2017 GigaDevice 2017 06 23 V1 0 0 demo for GD32F30x include gd3