国产航顺HK32F030M: 内部参考电压

news2024/12/23 3:40:32

在这里插入图片描述

HK32F030MF4P6 用户手册
在这里插入图片描述

内部参考电压

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


adc.c

#include "bsp_adc.h"

/**
  * @brief  ADC GPIO 初始化
  * @param  无
  * @retval 无
  */
static void ADCx_GPIO_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	// 打开 ADC IO端口时钟
	ADC_GPIO_AHBxClock_FUN ( ADC_GPIO_CLK, ENABLE );
	
	// 配置 ADC IO 引脚模式
	// 必须为模拟输入
	GPIO_InitStructure.GPIO_Pin = ADC_PIN;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	
	// 初始化 ADC IO
	GPIO_Init(ADC_PORT, &GPIO_InitStructure);				
}

/**
  * @brief  配置ADC工作模式
  * @param  无
  * @retval 无
  */
static void ADCx_Mode_Config(void)
{
	ADC_InitTypeDef ADC_InitStructure;	
  
  // 打开ADC时钟
	ADC_APBxClock_FUN ( ADC_CLK, ENABLE );
	// 使能内部参考电压
	ADC_VrefintCmd(ADCx,ENABLE);
  
  ADC_DeInit(ADC1);
  
  /* 注意:这个ADC_InitStructure结构体变量反初始化非常必要,不进行反初始化会导致ADC的配置参数出错。
           或者另外一个方法是对结构体成员ADC_InitStructure.ADC_ExternalTrigConvEdge进行赋值,不要空着
  */
  ADC_StructInit(&ADC_InitStructure);  

  // ADC模式配置
  // 连续转换模式
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  
  // 不用外部触发转换,软件开启即可
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
  
  // 转换结果数据右对齐方式
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  
  // ADC转换扫描方式向:从小到大
	ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
  
  // 初始化ADC
  ADC_Init(ADCx,&ADC_InitStructure);
  
  // 配置ADC通道转换时间
  /* ADC1 regular channels configuration */ 
  ADC_ChannelConfig(ADCx, ADC_CHANNEL , ADC_SampleTime_239_5Cycles);
  
  // 对ADC进行校准
  ADC_GetCalibrationFactor(ADC1);
  
  // ADC 转换结束产生中断,在中断服务程序中读取转换值
	ADC_ITConfig(ADCx, ADC_IT_EOC, ENABLE);

  /* Enable ADC1 */
  ADC_Cmd(ADCx, ENABLE);

	while(!ADC_GetFlagStatus(ADCx, ADC_FLAG_ADRDY)); 
  
  // 由于没有采用外部触发,所以使用软件触发ADC转换
	ADC_StartOfConversion(ADCx);
}

static void ADC_NVIC_Config(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  // 配置中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQ;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}


/**
  * @brief  ADC初始化
  * @param  无
  * @retval 无
  */
void ADCx_Init(void)
{
//	ADCx_GPIO_Config();
	ADCx_Mode_Config();
	ADC_NVIC_Config();
}

// 中断服务函数
void ADC_IRQHandler(void)
{
  if (ADC_GetITStatus(ADCx,ADC_IT_EOC)==SET) 
	{
		// 读取ADC的转换值
		ADC_ConvertedValue = ADC_GetConversionValue(ADCx);
	}
	ADC_ClearITPendingBit(ADCx,ADC_IT_EOC);//清除ADCx的中断
}




/**************************************************************************
*@brief函数功能:AD中位值滤波法,连续采样N次(N取奇数),把N次采样值按大小排列,取中间值为本次有效值
*@param入口参数:无
*@retval返 回 值:N (采样次数)
**************************************************************************/
uint16_t Fliter_middle(uint8_t N)
{
 uint16_t value_buf[N];
 uint16_t count,i,j,temp;
 for(count = 0;count < N;count++) //获取采样值
 {
  value_buf[count] = ADC_ConvertedValue;
 }
 for(j = 0;j<(N-1);j++)
 {
  	for(i = 0;i<(N-j-1);i++)
  	{
	  	if(value_buf[i]>value_buf[i+1]) // 冒泡法排序
	  	{
	   		temp = value_buf[i];
	   		value_buf[i] = value_buf[i+1];
	   		value_buf[i+1] = temp;
	  	}
  	}
 }
 return value_buf[(N-1)/2];
}








main.c

#include "system.h"

int main(void)
{
	softWareDelay(10); //系统上电延时函数

	systemInit(); // 初始化
			
	while(1)                            
	{
		

		if(Model_Key > 3){ Model_Key = 0;}
		switch(Model_Key){
			case 0:
				Display_FloatData((float)Fliter_middle(11)*3.3/4095);break;
			case 1:
				Display_FloatData(ch2);break;
			case 2:
				Display_IntData(USART_Temp);break;
			case 3:
				Display_IntData(303);break;
			default:
				break;
	}
		softWareDelay(2500);
		

}

}

效果

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/866434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-Perl - msgctl函数

描述 该函数使用参数ID,CMD和ARG调用系统函数msgctrl()。您可能需要包括IPC::SysV包以获得正确的常量。 语法 以下是此函数的简单语法- msgctl ID, CMD, ARG返回值 该函数返回0,但如果系统函数成功返回0和1,则返回true。 Perl 中的 msgctl函数 - 无涯教程网无涯教程网提供…

TCP协议的报头格式和滑动窗口

文章目录 TCP报头格式端口号序号和确认序号确认应答&#xff08;ACK&#xff09;机制超时重传机制 首部长度窗口大小报文类型URGACKSYNPSHFINRST 滑动窗口滑动窗口的大小怎么设定怎么变化滑动窗口变化问题 TCP报头格式 端口号 两个端口号比较好理解&#xff0c;通过端口号来找…

3.UE基本操作及数字人工程模块组成(UE数字人系统教程)

1.Fay-UE5数字人工程导入 2.UE数字人语音交互 3.UE基本操作及数字人工程模块组成&#xff08;UE数字人系统教程&#xff09; 一、ue5基本操作 1、项目文件管理 2、关卡素材编辑 在关卡上&#xff1a;w、s、a、d移动&#xff0c;鼠标右键拖动换视角。 二、数字人工程模…

Downie 4 for Mac

Downie是一款Mac平台上非常实用的视频下载工具。它支持下载各种视频网站上的视频&#xff0c;并且具有快速、稳定、易于使用的特点。 Downie具有快速、稳定的下载速度&#xff0c;可以帮助用户轻松地下载高清视频和音频文件。 该软件还提供了简洁、易于使用的界面&#xff0c;…

Java并发编程(三)线程同步 上[synchronized/volatile]

概念 当使用多个线程来访问同一个数据时,将会导致数据不准确,相互之间产生冲突,非常容易出现线程安全问题,比如多个线程都在操作同一数据,都打算修改商品库存,这样就会导致数据不一致的问题。 所以我们通过线程同步机制来保证线程安全,加入同步锁以避免在该线程没有完成操作之前…

C++文件类(整理自C语言中文网-全)

C文件类&#xff08;文件流类&#xff09;及用法详解 《C输入输出流》一章中讲过&#xff0c;重定向后的 cin 和 cout 可分别用于读取文件中的数据和向文件中写入数据。除此之外&#xff0c;C 标准库中还专门提供了 3 个类用于实现文件操作&#xff0c;它们统称为文件流类&…

2.0 Maven基础

1. Maven概述 Maven概念 Apache Maven是一个软件项目管理工具&#xff0c;将项目开发和管理过程抽象程一个项目对象模型&#xff08;POM&#xff0c;Project Object Model&#xff09;。 Maven作用 项目构建 提供标准的、跨平台的自动化项目构建方式。 依赖管理 方便快捷…

【Java】数据交换 Json 和 异步请求 Ajax

&#x1f384;欢迎来到边境矢梦的csdn博文&#xff0c;本文主要讲解Java 中 数据交换和异步请求 Json&Ajax 的相关知识&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#…

【枚举】CF1660 D

Problem - 1660D - Codeforces 题意&#xff1a; 思路&#xff1a; 思路巨简单&#xff0c;代码也wa了很多发才过&#xff0c;都是因为细节.... 很显然&#xff0c;要根据0分段处理 对于每一段&#xff0c;枚举去掉左边段还是右边段&#xff0c;左边段是 l 到第一个负数&am…

Blazor 简单组件(0):简单介绍

文章目录 前言说明环境安装 前言 Blazor 这个技术还是比较新&#xff0c;相关的UI组件还在完善&#xff0c;我这里提供一下我个人的组件开发。 说明 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 环境安装 C#小轮子&#xff1a;Visual Studio自…

Vue过滤器(时间戳转时间)

目录 过滤器 HTML写法&#xff1a; 定义过滤器: 定义全局过滤器&#xff1a; 过滤器串联&#xff1a; 带参数过滤器&#xff1a; 时间戳转时间 过滤器 官方地址&#xff1a;过滤器 — Vue.js (vuejs.org) 过滤器是指Vue.js支持在{{}}插值的尾部添加一个管道符“&#xff0…

【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建Java、Python项目

文章目录 一、云IDE1、云IDE简介2、云IDE和云虚拟桌面区别 二、Cloud Studio 简介1、简介2、AI代码助手3、企业源代码安全 三、快速开始1、登录Cloud Studio2、新建工作空间3、代码空间 四、项目构建1、构建Java项目1.1 新建工作空间1.2 初始化项目1.3 初始化小案例1.4、测试Ja…

(贪心) 剑指 Offer 14- II. 剪绳子 II ——【Leetcode每日一题】

❓剑指 Offer 14- II. 剪绳子 II 难度&#xff1a;中等 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n 都是整数&#xff0c;n > 1 并且 m>1 &#xff09;&#xff0c;每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*.…

【云原生】Docker 详解(三):Docker 镜像管理基础

Docker 详解&#xff08;三&#xff09;&#xff1a;Docker 镜像管理基础 1.镜像的概念 镜像可以理解为应用程序的集装箱&#xff0c;而 Docker 用来装卸集装箱。 Docker 镜像含有启动容器所需要的文件系统及其内容&#xff0c;因此&#xff0c;其用于创建并启动容器。 Dock…

搭建Docker环境

目录 一、docker环境搭建 1、卸载旧版本docker 2、安装依赖和设置仓库 3、安装docker 4、启动并加入开机启动 5、验证是否安装成功 二、利用docker搭建nginx 1、拉取镜像 2、启动容器&#xff0c;部署nginx 一、docker环境搭建 1、卸载旧版本docker yum remove docke…

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用 作者&#xff1a;安静到无声 个人主页 数据加载程序示意图 使用方法 示例代码 #%%from __future__ import absolute_import from __future__ import division from __future__ import print_…

Python(七十九)字符串的常用操作——字符串内容对齐操作的方法

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

间歇性和连续性静息态功能磁共振成像的异同

摘要 功能磁共振成像(fMRI) block设计实验通常包括呈现认知任务的ON-block和无认知任务的OFF-block。然而&#xff0c;ON-block之间的OFF-block也可以看作间歇性休息的标志&#xff0c;从而诱发短暂的静息状态。目前仍然不知道这种间歇期的大脑活动是否反映了与连续期相同的静…

阻塞队列_线程安全版本_生产消费者模型

前言 在前面PriorityQueue优先级队列_Y君的进化史的博客-CSDN博客&#xff0c;我们学习了优先级队列&#xff0c;但是发现&#xff0c;当一个线程将优先级队列使用完之后&#xff0c;会自动退出程序&#xff0c;如果此时我们想使其一直等待到下一个任务的录入&#xff0c;就需…