STM32G070RBT6-MCU温度测量(ADC)

news2024/11/25 19:22:56

1、借助STM32CubeMX生成系统及外设相关初始化代码。
Debug调试接口
时钟选择
时钟配置
ADC配置
在以上配置后就可以生成相关初始化代码了。

/* ADC1 init function */
void MX_ADC1_Init(void)
{

  /* USER CODE BEGIN ADC1_Init 0 */

  /* USER CODE END ADC1_Init 0 */

  ADC_ChannelConfTypeDef sConfig = {0};

  /* USER CODE BEGIN ADC1_Init 1 */

  /* USER CODE END ADC1_Init 1 */

  /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
  */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc1.Init.LowPowerAutoWait = DISABLE;
  hadc1.Init.LowPowerAutoPowerOff = DISABLE;
  hadc1.Init.ContinuousConvMode = ENABLE;
  hadc1.Init.NbrOfConversion = 1;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc1.Init.DMAContinuousRequests = DISABLE;
  hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  hadc1.Init.SamplingTimeCommon1 = ADC_SAMPLETIME_160CYCLES_5;
  hadc1.Init.SamplingTimeCommon2 = ADC_SAMPLETIME_160CYCLES_5;
  hadc1.Init.OversamplingMode = DISABLE;
  hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    Error_Handler();
  }

  /** Configure Regular Channel
  */
  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
  sConfig.Rank = ADC_REGULAR_RANK_1;
  sConfig.SamplingTime = ADC_SAMPLINGTIME_COMMON_1;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN ADC1_Init 2 */

  /* USER CODE END ADC1_Init 2 */

}
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
{

  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  if(adcHandle->Instance==ADC1)
  {
  /* USER CODE BEGIN ADC1_MspInit 0 */

  /* USER CODE END ADC1_MspInit 0 */

  /** Initializes the peripherals clocks
  */
    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
    PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    {
      Error_Handler();
    }

    /* ADC1 clock enable */
    __HAL_RCC_ADC_CLK_ENABLE();
  /* USER CODE BEGIN ADC1_MspInit 1 */

  /* USER CODE END ADC1_MspInit 1 */
  }
}

void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
{

  if(adcHandle->Instance==ADC1)
  {
  /* USER CODE BEGIN ADC1_MspDeInit 0 */

  /* USER CODE END ADC1_MspDeInit 0 */
    /* Peripheral clock disable */
    __HAL_RCC_ADC_CLK_DISABLE();
  /* USER CODE BEGIN ADC1_MspDeInit 1 */

  /* USER CODE END ADC1_MspDeInit 1 */
  }
}
//CPU 温度检测功能代码
float  TempDectect()
{
    float  Tmep1 = 0.284;
    uint32_t aDsUM = 0;
    uint32_t AdcVol = 0.0;
    int16_t  aDCvALUE = 0;
    HAL_ADC_Start(&hadc1);	//启动ADC转换
    HAL_ADC_PollForConversion(&hadc1,10);	//等待转换完成,10ms表示超时时间
    aDCvALUE = HAL_ADC_GetValue(&hadc1);	//读取ADC转换数据(12位数据)

    /*温度公式与参数释义:
    TMP = (TS_CAL2_TEMP - TS_CAL1_TEMP)/(TS_CAL2 - TS_CAL1) * (TS_DATA - TS_CAL1) + TS_CAL1_TEMP;
    TS_CAL2_TEMP:130°
    TS_CAL1_TEMP:30°
    TS_CAL2:0x56A(根据手册得知值存储在flash地址0x0x1FFF75CA - 0x1FFF75CB)需要读出来
    TS_CAL1:0x40A(根据手册得知值存储在flash地址0x0x1FFF75A8 - 0x1FFF75A9)需要读出来
    TS_DATA:是由 ADC 转换得到的实际温度传感器输出值
    */
    //Tmep1 = (130-30)/(1386-1034);   //计算一直为0,所以将其设为恒定值

    Tmep = (Tmep1 * (aDCvALUE - 1034)) + 30;

    return Tmep;
}

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

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

相关文章

MyBatis-Plus通用Service快速实现赠三改查[MyBatis-Plus系列] - 第489篇

历史文章(文章累计480) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 M…

综述 | 关于点云配准的全面综述(二)

原创 | 文 BFT机器人 05 基于优化的配准方法 基于优化的方法的关键思想是开发复杂的优化策略来实现方程(1)中非线性问题的最优解。 由于同源挑战的影响,这个非线性问题变得具有挑战性。图(2a)总结了该类别的主要过程。…

从零开始之了解电机及其控制(11)实现空间矢量调制

广泛地说,空间矢量调制只是将电压矢量以及磁场矢量在空间中调制到任意角度,通常同时最大限度地利用整个电压范围。 其他空间矢量调制模式确实存在,并且根据您最关心的内容,它们可能值得研究。 如何实际执行这种所谓的交替反向序列…

看看属猴人性格及近几年的运势怎么样?

属猴的人五行主金,乃是申金之所在,金旺之人,外显懒散,内心富有主见,行事坚定, 有贯彻始终之斗志,与他人合作融洽,且得以财运颇多; 主金,杀伐果决、精明干练&a…

PHP各种老版本下载方式

最近因工作需要,要下载PHP7.3的最新版本版本。 PHP官网上提供了各种老版本下载地址: https://windows.php.net/downloads/releases/archives/ 下载速度不稳定,时快时慢。 使用前,给下载留足时间。 貌似晚上速度快一些。

gif怎么转换成视频MP4?

gif怎么转换成视频MP4?GIF动图已成为一种风靡网络的流行的特殊图片文件,其循环播放和逐帧呈现的特点使其在社交媒体、聊天应用等场合广泛应用,平时我们进行群聊是,大家总会一些gif动态表情的出现而感觉非常的开行,gif动…

Android12之容器类SortedVector、KeyedVector、Vector、VectorImpl总结(一百六十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

极致增长 | NetMarvel 程序化广告最大化广告变现收益

程序化广告已彻底改变广告主触达目标受众的方式。 从早期传统人工售卖流量,到流量平台推出广告联盟,从程序化交易到利用算法和机器学习实时计算买卖广告空间,通过逐渐精微的数据来测评不同渠道、不同受众的广告效果,提高广告主的…

datart:Invalid database configuration. Datart is running in demo mode

datart在IDEA配置好数据库连接之后,启动,报错: 【********* Invalid database configuration. Datart is running in demo mode *********】 原因是缺少一个变量 config 增加即可: 再次启动,就不会报无效数据库配置了…

百华鞋业董事长牛兴华应邀出席德国前总统武尔夫欢迎宴会

2023年9月25日,德国前总统克里斯蒂安-武尔夫(Christian Wullff)一行来华访问期间,于上海新华联索菲特举办2023中德交流领袖论坛暨武尔夫总统欢迎晚宴。百华鞋业董事长牛兴华先生受邀出席,并受到武尔夫的亲自接见。 山东…

关于NVIC 中断控制器的中断配置。

以下图片均来自NVIC控制器内容。 M3处理器仅实现了每个81个中断,每个中断的优先级由高4位控制。 这里的组优先级我认为是抢占式优先级。

多线程批量下载ERA5逐日数据

介绍 这篇博文主要是整了和ERA5官方参考文档和网上现有的代码,从而实现ERA5逐日数据的批量下载**(可指定时区)**。 先前准备 在使用python批量下载ERA5逐日数据前我们需要手动配置一下cdsapi 1.访问:CDS官网并注册账号 2.注册好…

掌动智能:UI自动化测试工具的重要性和应用

在软件开发过程中,测试是至关重要的环节。而UI自动化测试工具则成为了测试团队提高效率、降低成本、保证软件质量的重要利器。本文将介绍UI自动化测试工具的概念和重要性,并探讨其在软件开发中的应用和好处。 一、UI自动化测试工具的概念 UI自动化测试工…

获奖作品展示 | 2023嵌入式大赛AidLux系列作品精彩纷呈

第六届(2023)全国大学生嵌入式芯片与系统设计竞赛应用赛道全国总决赛已于8月下旬圆满结束。 本届赛事中,AidLux是广和通5G智能物联网赛题的唯一软件支持,阿加犀为该赛题学生们提供了全程线上辅导、技术答疑,以及大赛专…

VR庆中秋丨奇幻月景邀您共赏!

中秋佳节, 如何来一场别开生面的云游月景体验? 3DVR技术开启中秋过节新姿势, 嫦娥奔月伴玉兔、 太白花间饮美酒、 吴刚月下伐桂树…… 立体化还原璀璨的传统中秋文化, 还有趣味猜灯谜活动, 丰富豪礼等你来拿&a…

Coovally模型探索:高效下载并使用Hugging Face Transformers预训练模型

Hugging Face Transformers 是一个用于自然语言处理(NLP)的开源库,提供了各种预训练模型。这些模型被广泛应用于各种任务,如文本分类、命名实体识别、问答、文本生成等。Transformers库易于使用,可方便地集成到现有的深…

归并(merge)排序

归并(merge)排序也是采用分而治之的思想,其采用二分法将待排列数组分成若干个子数组。然后将相邻的子数组进行归并成新的有序子数组,然后在新的子数组的基础上在进行归并成新的有序数组,直至归并成一个整体有序的数组。…

源码编译postgresql

没什么好研究的了,就试试编译Postgresql源码,按照网站查的资料一步步测试的,方便后期定制数据库时候用,也算是开源的大优势了,只要你愿意折腾,可以自己定制或改进一个数据库来满足特殊业务。后面研究一下他…

Python 练习100实例(1-20)

Python 练习实例1 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 …

The Reversal Curse: LLMs trained on “A is B“ fail to learn “B is A“

(not an original, only classified as one to avoid cramming reference links) paper: https://owainevans.github.io/reversal_curse.pdf blog with interactions with the authors: Paper: LLMs trained on “A is B” fail to learn “B is A” — LessWrong This is a…