stm32应用、项目、调试
主要记录实际使用中的一些注意点。
1.LCD
1.LCD1602
电路图:

看手册:电源和背光可以使用5v或者3.3v,数据和控制引脚直接和单片机引脚连接即可。
单片机型号:stm32c031c6t6 可以直接使用推完输出连接D0--D7,RS,EN,RW引脚,3.3v就可以驱动(我使用的是这种方式);或者使用开漏输出,外面加上拉电阻5v驱动(没有用,不知道效果)。
两个间隔时间:
1.控制时序的延时:这个用的多,时间太短会显示不正常,或者不显示。
2.发给lcm指令之间的延时:一般初始化的时候回用一下
/*液晶初始化*/
void Lcm1602A_Init(void)
{ Lcm1602A_Wr_Command(0x38);Lcm1602A_Wr_Command(0x38); //2次显示模式设置Lcm1602A_Wr_Command(0x0c); //显示及光标设置Lcm1602A_Wr_Command(0x01); //显示清屏HAL_Delay(2);Lcm1602A_Wr_Command(0x06); //显示光标移动设置Lcm1602A_Display_String();
}
/*发送指令给lcd*/
void Lcm1602A_Wr_Command(uint8_t wrcommand)
{RS_1602A(0);//控制引脚RW_1602A(0);//控制引脚Lcm_Delay(LCM_DELAY_TIME);//这个延时很重要Lcm1602A_Data_Write(wrcommand);//写入数据(指令)Lcm_Delay(LCM_DELAY_TIME);E_1602A(1);//使能引脚Lcm_Delay(LCM_DELAY_TIME);E_1602A(0);
}
遇到的问题:减少Lcm_Delay(LCM_DELAY_TIME)时间;导致初始化失败,可是看手册的话,接受一个指令1us就够了,可是实际使用却需要几十us或者更长时间才够,不知道哪里的问题。先不管了。
Lcm_Delay(LCM_DELAY_TIME)不同时间下:
初始化效果:
正常如下

间隔100us如下

间隔50us:

间隔10us如下

间隔2us如下

其他状况:
本来应该是第一行显示0--9 符号 第二行显示字母的,
不知道是程序被动过了,还是编译环境,还是什么有变化,初始化完成就变成了这样。

同样的时间下,连续两行显示全部显示不成功,但是一次显示几个字符却可以正常显示,当时调试的时候,就是这原因没注意到初始化没成功。
处理方式:增长延时的时间,lcd显示不需要很实时。
原因:同样的Lcm_Delay(LCM_DELAY_TIME) (大概延时10us),
(外部晶振用的是25mhz)定时器tim3的Prescaler = 47; Period = 1;可以正常初始化
改成Prescaler = 24; Period = 999; 初始化会出错。
2.LCD12864
字体显示:
横置横排:平时看的从左到右显示的那种
竖置横排:古代的那种排版
常用芯片:ST7567
2.rs485、rs232、rs422
rs485使用:
max3485:3.3v左右驱动
max485:5v左右驱动,不过有时候3.3v驱动也可以使用,具体有什么问题或者通过电路规避问题还没有了解过。
rs485和rs422有相同的地方,485满足422的规范,反过来不行,要注意。
MAX481/MAX483/MAX485/ MAX487:用于rs485
MAX488/MAX490/MAX491:用于rs422
MAX232/MAX3232:用于 rs232
以上是常见型号,不同公司命名方式不同,
通讯芯片:rs485芯片使用电路图
此电路图是简单版本,没有偏置电路(上下拉),防冲击器件,可以使用的,只是少了安全等旁电路。

资料:
RS485使用注意事项(上下拉电阻)
https://www.cnblogs.com/CodeWorkerLiMing/p/14259593.html
rs485调试遇过的问题:
单片机引脚TX和RX搞反了,测试max487之前的串口是有数据的,电脑串口助手能够接受到,经过接收不到了。 找原因以为是ab相少了上下拉电阻;电压什么不对,后来确定原因是引脚反了,虽然反了,但是中间偶尔也能收到几个正确的字符,所以开始主要以为是程序有问题。
如果max输入端没问题,输出端差分引脚ab接反了,电脑串口助手也能收到字符,就像波特率不对,也能收到字符,不过解析出来的是乱码。
资料:
关于485通讯芯片MAX487的一个问题
关于485通讯芯片MAX487的一个问题 - 通信技术 - 21ic电子技术开发论坛
相关文章:
stm32应用、项目、调试
主要记录实际使用中的一些注意点。 1.LCD 1.LCD1602 电路图: 看手册:电源和背光可以使用5v或者3.3v,数据和控制引脚直接和单片机引脚连接即可。 单片机型号:stm32c031c6t6 可以直接使用推完输出连接D0--D7,RS,EN,RW引脚&#…...
WEB渗透-未授权访问篇
WEB渗透未授权访问篇-Redis-CSDN博客 activemq 默认端口8161,默认账户密码admin/admin http://1.1.1.1:8161/admin/connections.jsp PUT /fileserver/%2F%2F2%083.jsp HTTP/1.0 Content-Length: 27 Host: 1.1.1.1:8161 Connection: Close Authorization: Basic YW…...
x86_64、AArch64、ARM32、LoongArch64、RISC-V
以下是对 x86_64、AArch64、ARM32、LoongArch64 和 RISC-V 这几种计算机架构的介绍,包括它们的应用场景、优缺点: 1. x86_64 简介: x86_64 是由 AMD 推出的 64 位扩展版 x86 架构,兼容于英特尔的 IA-32 架构。这一架构被广泛应用于桌面和服…...
git push上不去的问题Iremote reiectedl——文件过大的问题
在新建分支的时候,发现push怎么也上传不上去,一开始觉得是权限的问题,但是尝试了各种方案都没有用,后面再仔细看了一下是文件太大了,远程拒绝推送 接下来,和大家讲讲我的解决方案 1、把修改的代码迁移到新…...
Qt Creator卡顿
删除IDE的配置参数的保存文件夹QtProject,使得Qt Creator恢复出厂值。 C:\Users\替换为你的用户名\AppData\Roaming\QtProject 参考链接: Qt Creator 卡顿 卡死...
数据结构笔记(其五)--串
目录 12.串 12.1 基本操作 12.2 串的存储结构 12.3 字符串的模式匹配算法 (1).朴素模式匹配算法 (2).KMP算法 i.next[]数组的求解 ii.next[]数组的优化——nextval数组 iii.手算nextval数组 iiii.机算nextval数组 + KMP函数 12.串 串,即字符串(string),由零个或多…...
Python爬取高清美女图片
文章概述 本文将详细介绍如何使用Python编写一个简单的爬虫来抓取高清美女图片。我们将利用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML文档,从而提取出图片的URL并将其下载到本地。 技术栈 Python: 编程语言requests: HTTP客户端库Beau…...
gin路由
1主文件 package main import ("github.com/gin-gonic/gin""godade/user""net/http" ) func main() {router : gin.Default()router.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "Hello World")})v1 : router…...
达梦数据库操作以及报错修改
执行失败(语句1) -6105:: 数据类型不匹配 第12 行附近出现错误 插入sql语句 INSERT INTO "by_ioc_rbac"."user_info" ("user_account", "user_name", "birthday", "password", "gender", "mobi…...
江科大/江协科技 STM32学习笔记P21
文章目录 ADC模数转换器ADC简介逐次逼近型ADCSTM32的ADCADC基本结构输入通道转换模式单次转换,非扫描模式连续转换,非扫描模式单次转换,扫描模式连续转换,扫描模式 触发控制数据对齐转换时间校准硬件电路电位器产生可调电压的电路…...
第三方jar自带logback导致本地日志文件不生成
1.问题及解决 这是依赖的jar包,自己有logback,只打印到控制台,导致我们项目里配置的error级别日志不会生成到日志文件中去。ai给的答案是自己控制加载顺序,但很麻烦,--logging.config也不行,最好下了个7z压…...
国产数据库备份恢复实现
数据库备份恢复是数据库高可用的基本能力,如何通过备份数据快速高效的恢复业务并且满足不同场景下的恢复需求,是各数据库厂商需要关注的要点。本文将介绍几种国产数据库的备份恢复功能,以加深了解。 1、数据库备份恢复方案 数据库备份是生产…...
数据仓库: 2- 数据建模
目录 2- 数据建模2.1 维度建模2.1.1 维度建模的基本概念2.1.1.1 事实表 (Fact Table)2.1.1.2 维度表 (Dimension Table)2.1.1.3 维度 (Dimension)2.1.1.4 度量 (Measure) 2.1.2 维度建模的主要模型2.1.2.1 星型模型 (Star Schema)2.1.2.2 雪花模型 (Snowflake Schema)2.1.2.3 星…...
Tomcat 漏洞
一.CVE-2017-12615 1.使用burp抓包 把get改成put jsp文件后加/ 添加完成后访问 木马 然后木马的网址 在哥斯拉测试并且添加 添加成功 然后我们就成功进去啦、 二.弱口令 点击后输入默认用户名、密码:tomcat/tomcat 登陆之后上传一个jsp文件 后缀改成war 然后访问我…...
分布式消息队列Kafka
分布式消息队列Kafka 简介: Kafka 是一个分布式消息队列系统,用于处理实时数据流。消息按照主题(Topic)进行分类存储,发送消息的实体称为 Producer,接收消息的实体称为 Consumer。Kafka 集群由多个 Kafka 实…...
C# Unity 面向对象补全计划 七大原则 之 迪米特法则(Law Of Demeter )难度:☆☆☆ 总结:直取蜀汉
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺 1.迪米特法则(…...
【C++】—— 类与对象(四)
【C】—— 类与对象(四) 6、赋值运算符重载6.1、运算符重载6.1.1、基础知识6.1.2、调用方法6.1.3、前置 与 后置 的重载6.1.4、注意事项6.1.5、<< 和 >> 运算符重载6.1.5.1、<< 和 >> 基础6.1.5.2、日期类 operator<< 的实…...
Qt无边框窗口,关闭后再show,鼠标等事件不响应问题解决办法
问题描述 使用Qt做了一个无边框界面,关闭后再打开,子控件的点击以及hover效果不可用。 setWindowFlags(windowFlags() | Qt::Dialog | Qt::FramelessWindowHint);//去掉标题栏解决方案: 在网上发现可以通过重写showEvent(QShowEvent* showE…...
StringJoiner更优雅创建含分隔符的字符序列
文章目录 1 why2 what3 how4 练习手段 1 why StringBuilder拼接包含分隔符的字符序列时,分隔符需要一个一个添加,或者需要手动删除末尾冗余的分隔符,代码不美观,不好看。 比如,单个字符串依次拼接时: Stri…...
线程池原理(一)线程池核心概述
更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 线程回顾 创建线程的方式 继承 Thread 类实现 Runnable 接口 创建后的线程有如下状态: NEW:新建的线程,无任何操作 public static void main(String[] args) {Thread…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
