【备赛】遇到的小问题-1

问题描述-1

想实现的功能是,通过ADC实时测量某引脚的电压及其占空比。

可以通过旋转电位器,更改其电压。

首先我定义了这几个变量

uint32_t adc_value;//HAL库函数里面得出的采样值(实时更新)
uint32_t percentage6;//占空比,随着adc_value变化而变化
uint32_t percentage7;//占空比,随着adc_value变化而变化

然后在while循环里面不断测量adc的采样值 

adc_value = HAL_ADC_GetValue(hadc);

 同样的在while循环里面不断更新这两个占空比的值。

percentage6 = adc_value / 4096;
percentage7 = adc_value / 4096;

但是会发现percentage6,percentage7的值总是0.

之前一直没想到小数的问题(太久不写代码了,悲).

解决方案-1

就是把赋值过程改成浮点数再转换成整数。

percentage6 = ((float)adc_value / 4096.0f)*100;
percentage7 = ((float)adc_value / 4096.0f)*100;

这样出来就是整数了

percentage6  = 80。。。等等\

ok解决

问题二:

实际上面的过程我都是用函数实现的。

把lcd_show()放在while里面循环执行。

void lcd_show()
{percentage6 = ((float)adc_value / 4096.0f)*100;percentage7 = ((float)adc_value / 4096.0f)*100;if (Page == 0 && mode == 0){sprintf(text, "      Data         ");LCD_DisplayStringLine(Line0, (uint8_t *)text);sprintf(text, "     V:%.2fV      ", get_vol(&hadc2));LCD_DisplayStringLine(Line2, (uint8_t *)text);sprintf(text, "     Mode:AUTO    ");LCD_DisplayStringLine(Line4, (uint8_t *)text);}else if (Page == 0 && mode == 1){sprintf(text, "      Data         ");LCD_DisplayStringLine(Line0, (uint8_t *)text);sprintf(text, "     V:%.2fV      ", get_vol(&hadc2));LCD_DisplayStringLine(Line2, (uint8_t *)text);sprintf(text, "     Mode:MANU    ");LCD_DisplayStringLine(Line4, (uint8_t *)text);}else if (Page == 1){sprintf(text, "      Para         ");LCD_DisplayStringLine(Line0, (uint8_t *)text);sprintf(text, "    PA6:%d         ",percentage6);LCD_DisplayStringLine(Line2, (uint8_t *)text);sprintf(text, "    PA7:%d         ",percentage7);LCD_DisplayStringLine(Line4, (uint8_t *)text);}
}
double get_vol(ADC_HandleTypeDef *hadc)
{HAL_ADC_Start(hadc);adc_value = HAL_ADC_GetValue(hadc);return 3.3 * adc_value / 4096;
}

但是在调试的时候发现,percentage的值只能更新一次,但是adc_value的值是不断变化的

解决二:

这是因为,在lcd_show()函数实现的开头赋值的时候,没更新adc_value的值。

在开头加上这个函数重新更新一遍就好了。

 get_vol(ADC_HandleTypeDef *hadc)

记录学习。

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

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

相关文章

最大公约数

4.最大公约数 - 蓝桥云课 最大公约数 题目描述 给定两个正整数 A,B,求它们的最大公约数。 输入描述 第1行为一个整数 T,表示测试数据数量。 接下来的 T 行每行包含两个正整数 A,B。 1≤T≤105,1≤A,B≤109。 输出描述 输出共 T 行&…

TMHMM2.0-蛋白跨膜螺旋预测工具-centos-安装+配置+排错

参考: A. Krogh, B. Larsson, G. von Heijne, and E. L. L. Sonnhammer. Predicting transmembrane protein topology with a hidden Markov model: Application to complete genomes. Journal of Molecular Biology, 305(3):567-580, January 2001. centos&#x…

docker run 命令常用参数

docker run 命令 用于从镜像创建并启动一个新的容器。 基本语法: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用选项分类说明 容器配置 --name 为容器指定名称(默认随机生成)。 示例: docker run --name my_container …

Zbrush插件安装

安装目录在: ...\Zbrush2022\ZStartup\ZPlugs64

pandas中excel自定义单元格颜色

writerpd.ExcelWriter(filepathf05教师固定学生占比1月{today}.xlsx,engineopenpyxl) df.to_excel(writer,sheet_name明细) piv1.to_excel(writer,sheet_name1月分布) wswriter.book.create_sheet(口径) ws.cell(1,1).value综合占比: ws.cell(1,2).value固定学生占比…

整体二分算法讲解及例题

算法思想 整体二分,带有二分二字那么就一定和二分脱不了干系。 整体二分算法常用来解决询问区间的第 k k k小值的问题,思路如下: 我们二分的对象是这道题目给定的值域,及最小值与最大值之间的区间,在题目给定的数组中…

python+flask实现360全景图和stl等多种格式模型浏览

1. 安装依赖 pip install flask 2. 创建Flask应用 创建一个基本的Flask应用,并设置路由来处理不同的文件类型。 from flask import Flask, render_template, send_from_directory app Flask(__name__) # 设置静态文件路径 app.static_folder static app.r…

XML转义符详解:如何在XML中正确处理特殊字符

在XML中,某些字符具有特殊含义,如果直接在文本中使用这些字符,可能会导致XML解析错误。为了避免这些问题,我们需要使用XML转义符或CDATA段来处理这些特殊字符。本文将详细介绍XML转义符的使用方法、注意事项,并结合实际…

IPC 进程间通信(一):管道(匿名管道进程池)

1. 初识进程间通信 1.1进程间通信的目的: 1、数据传输:一个进程需要将它的数据发送给另一个进程 2、资源共享:多个进程之间共享同样的资源 3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它…

Linux-数据结构-单链表练习-双链表

一.单链表练习和一些功能实现 【1】单链表实现字典查询 (1)定义存放数据的结构体,在每次向里面存放数据时候需要清空 (2)对字典进行切割 空格切割字母,再从剩余里切割到解释,这里windows的txt文…

网络爬虫相关

一、爬虫的基础内容 1、基本概念和用途 1.1、概念: 模拟浏览器、发送请求,获取响应。(只能获取客户端所展示出来的数据) 1.2、特点:知识碎片化,针对不同的网站对应的方法也不同。 爬虫:模拟…

Lora 中 怎么 实现 矩阵压缩

Lora 中 怎么 实现 矩阵压缩 1. 导入必要的库 import torch import re from datasets import Dataset from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, \get_cosine_schedule_with_warmup, EarlyStoppingCallback from peft

golang-嵌套结构体

结构体嵌套 golang中没有类,他通过结构体来实现其他编程语言中类的相关功能。 具名结构体 基本语法 基本语法 golang的结构体嵌套特别简单。 type 结构体类型1 struct{字段 类型1字段 类型2 }//这样就实现了结构体的嵌套 type 结构体类型2 struct{字段 类型1字…

基于Spring Boot的大学校园生活信息平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【 利用socket来实现简单远控】

利用socket来实现简单远控 🔹 免责声明⚠️ 重要提示一、什么是socket?二、如何使用socket来实现两台计算机之间的通信?服务端1、首先需要创建一个socket;2、绑定IP以及端口3、开启监听4、接受客户端连接5、客户端连接上之后就是命…

数据可视化在特征分布对比中的应用

数据可视化在特征分布对比中的应用 1. 引言 在机器学习系统开发和维护过程中,特征分布对比是评估数据质量和模型鲁棒性的关键环节。当训练数据与测试数据分布存在偏差,或生产环境中的数据分布随时间发生变化时,模型性能通常会显著下降。有效的数据可视化不仅能帮助检测这些…

依赖倒置 DIP、依赖注入 DI、控制反转 IoC 和工厂模式

1. 依赖倒置 依赖倒置原则(Dependency Inversion Principle, DIP)是 SOLID 原则中的一项,其核心思想是通过抽象解耦高层模块和低层模块,使二者都依赖于抽象而非具体实现。 依赖反转/倒置的体现:传统依赖方向是高层模块…

UnitTest框架管理测试用例——python自动化测试

UnitTest框架 UnitTest是Python自带一个单元测试框架,常用它来做单元测试。 注意:对于测试来说,UnitTest框架的作用是 自动化脚本(用例代码)执行框架————(使用UnitTest框架来管理 运行多个测试用例的) 为什么使用UnitTest框架 能够组织多个用例去执…

Vue 过滤器深度解析与应用实践

文章目录 1. 过滤器概述1.1 核心概念1.2 过滤器生命周期 2. 过滤器基础2.1 过滤器定义2.2 过滤器使用 3. 过滤器高级用法3.1 链式调用3.2 参数传递3.3 动态过滤器 4. 过滤器应用场景4.1 文本格式化4.2 数字处理4.3 数据过滤 5. 性能优化与调试5.1 性能优化策略5.2 调试技巧 6. …

ngx_http_module_t

定义在 src\http\ngx_http_config.h typedef struct {ngx_int_t (*preconfiguration)(ngx_conf_t *cf);ngx_int_t (*postconfiguration)(ngx_conf_t *cf);void *(*create_main_conf)(ngx_conf_t *cf);char *(*init_main_conf)(ngx_conf_t *cf, void *conf);…