
STM32
文章平均质量分 84
“逛丢一只鞋”
这个作者很懒,什么都没留下…
展开
-
PCB设计中如何区分 滤波电容、去耦电容、旁路电容
文章目录旁路电容和去耦电容的区别电容种类繁杂,但无论再怎么分类,其基本原理都是利用电容对交变信号呈低阻状态。交变电流的频率f越高,电容的阻抗就越低。旁路电容起的主要作用是给交流信号提供低阻抗的通路;去耦电容的主要功能是提供一个局部的直流电源给有源器件,以减少开关噪声在板上的传播和将噪声引导到地,加入去耦电容后电压的纹波干扰会明显减小;滤波电容常用于滤波电路中。对于理想的电容器来说,不考虑寄生电感和电阻的影响,那么在电容设计上就没有任何顾虑,电容的值越大越好。但实际情况却相差很远,并不是电容越大原创 2021-10-10 20:13:11 · 6715 阅读 · 0 评论 -
出现灵异事件的嵌入式?——难查的数组越界、神奇的volatile、局部变量......
文章目录难查的数组越界神奇的volatile局部变量了解你的编译器编译器的一些小知识初始化的全局变量和静态变量的初始值被放到了哪里?在C代码中使用的变量,编译器将他们分配到RAM的哪里?默认情况下,栈被分配到RAM的哪个地方?有多少RAM会被初始化?MDK编译器如何设置非零初始化变量?如果有硬件看门狗,则使用它通信阻塞处理简单易用的调试函数难查的数组越界数组常常是引起程序不稳定的重要因素,程序员往往不经意间就会写数组越界。一位同事的代码在硬件上运行,一段时间后就会发现LCD显示屏上的一个数字不正常的被原创 2021-05-08 15:41:46 · 2480 阅读 · 10 评论 -
缓冲、运放、跟随电路详解及区分
文章目录前言运算放大器电路分析方法运算放大器工作原理经典电路图一——反向放大器经典电路图二——同向放大器经典电路图三——加法器经典电路图四——加法器经典电路图五——减法器经典电路图六——积分电路经典电路图七——微分电路经典电路图八——差分放大电路经典电路图九——电流转换电压再送ADC转换成数字信号经典电路图十——电压转换成电流分析缓冲电路的概念缓冲电路的基本结构缓冲电路的工作原理电压跟随器缓冲隔离阻抗匹配、提高带载能力运算放大器和跟随器的区别分析前言本系统的设计中,需要外部ADC的模拟信号(其实也就是电原创 2021-05-06 17:00:35 · 43534 阅读 · 10 评论 -
STM32 CubeMX 看门狗
文章目录看门狗STM32的内置看门狗WWDG-窗口看门狗CubeMX操作步骤1)使能 WWDG时钟2)设置窗口值 ,分频数 和计数器初始值3)开启 WWDG4)使能中断通道并配置优先级(如果开启了 WWDG中断)5) 编写中断服务函数6) 重写窗口看门狗唤醒中断处理回调函数 HAL_WWDG_WakeupCallback结果看门狗在由单片机构成的微型计算机系统中单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环;或者因为用户配置代码出现BUG,导致芯片无法正常工作,出于对单片机运行原创 2021-04-09 17:29:29 · 3681 阅读 · 1 评论 -
通过J-Link下载HEX文件
更新控制板程序Step1:下载J-Link驱动程序并安装https://www.segger.com/downloads/jlink/Step2:通过J-Link连接PC端和STM32Step3:使用JLINK烧写HXE文件安装好以后打开J-LINK Flash的图标创建新的工程进行单片机型号的设置打开配置界面,点击Target->Connect显示连接成功打开需要烧录的HEX文件,加载进工程里面。找到HEX文件点击烧写按钮,如图所示根据提示判断是否成功原创 2021-03-29 16:26:40 · 1257 阅读 · 0 评论 -
QT完成UDP网络上位机设计,接收STM32自定义报文数据的处理和显示
文章目录设计需求UDPTCP和UDP的区别UI界面设计界面设计UDP代码设计与实现打开UDP关闭UDP发送数据关闭UDP上位机板间通信协议板子通信代码设计UDP上位机数据处理与显示HEX形式转十进制显示QString::number设计需求在原设计中,没有网络部分的设计,所以硬件部分是没有设计网络模块。为了增加网络功能,通过对预留串口的芯片手册查找,发现了预留的PA9和PA10口,可以复用为uart1串口。有了串口可以通信。那么就可以使用 uart转网口模块,实现网络功能。正点原子以太网转串口模原创 2021-01-10 17:57:51 · 5173 阅读 · 2 评论 -
正点原子以太网转串口模块 调试和使用方法(实战详解)
文章目录模块配套软件COM测试NET测试自回环验证模块的使用正点原子的例程正点原子在用户的资料支持这方面一直做的非常不错,但是对于这个串口转以太网模块,还是感觉有些地方写的不太清晰,在这里记录一下我的调试过程。模块配套软件到手后首先就是来测试下模块有没有正常运行,以及模块的一些参数配置相比于说明文档中我想从用户的角度来说明软件的使用方式COM测试首先是使用uart转usb的串口助手和我们的以太网连接,这样就可以测试模块uart的功能这里也没有什么歧义,只需要选择串口号和波特率就可以了,然后读取原创 2021-01-09 22:21:10 · 7772 阅读 · 5 评论 -
CubeMX初始化正点原子STM32F407 LAN8720A调通LWIP
正点原子芯片的外接晶振是8Mhz,CubeMX软件外部晶振默认是25Mhz,不过我们这里问题不大,用内部晶振。这里需要注意,CubeMX默认分配的引脚和正点原子的不一样,需要手动修改后面的LWIP就是正常的初始化就可以了这里还有一个关键的地方,就是LAN8720A,需要有一个ETH_RESET,用来给网口使能,PD3引脚做好了这些,可以生成代码,进入代码的调试了。来到代码的部分。首先就是使能前面配置的PD3引脚void LAN8720_RESET(void){// HAL_G原创 2020-10-13 21:07:47 · 3619 阅读 · 10 评论 -
STM32串口中断接收不定长报文并解析
文章目录功能实现背景介绍HAL库的中断接收函数状态机的运用功能实现背景介绍本项目中,需要使用STM32的USART6串口与FPGA板(下位机)通信,需要发送和接收数据,有报文应答机制。使用的报文规则如表格所示板间报文的通信协议,校验使用的是和校验U8 TX_CheckSum(U8 *buf, U8 len) //buf为数组,len为数组长度{ U8 i, ret = 0; for(i=0; i<len; i++) { ret += *(buf+原创 2020-10-10 16:22:23 · 2072 阅读 · 2 评论 -
STM32网络数据传输,实际项目中实现,以及网络卡死问题的解决
文章目录原创 2020-10-10 14:22:56 · 6480 阅读 · 1 评论 -
CubeMX FreeRTOS的一些记录
有无操作系统,对于程序的编写还是有很多的区别由操作系统之后,很多的上层服务函数可以直接写成任务,这样就可以交给系统进行管理。每个任务都是一个while(1)死循环。小灯的程序仿照程序中原有的任务这里是任务的创建,也是仿照原有程序的创建任务函数也需要在前面定义给任务分配一个固定的内存后面对于Free RTOS的使用,可以使用API,可以直接用FreeRTOShttps://www.freertos.org/xStreamBufferCreate.html也可以用CMSIS-RTOS2原创 2020-10-06 20:09:35 · 234 阅读 · 0 评论 -
CubeMX + VS Code配置环境代替Keil编写烧录调试程序
VS Code 搭建stm32开发环境搭建准备程序安装1.下载并安装 vs codehttps://code.visualstudio.com/2.下载并安装 STM32CubeMXhttps://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-genera原创 2020-10-06 19:19:08 · 3379 阅读 · 3 评论 -
STM32CubeMX EC11旋转编码器普通IO口外部中断+定时器实现
文章目录EC11旋转编码器中断标志位外部函数中实现中断回调函数中实现中断函数中实现项目背景是在STM32平台上的普通IO口PE13 PE14使用外部中断+定时器实现,这里因为设计没有选择可以支持ENCODE MODE的端口。EC11旋转编码器从这个数据手册中,我们可以设计出我们的思路,主要就是,以A信号作为一个时钟信号,也就是基准信号,检测到A之后,再去判断B的动作,一个相对的电平。例如,当检测到A信号下降沿触发,检测B信号此时如果是高电平,那就是逆时针,如果是低电平,那就是顺时针。///**原创 2020-09-12 10:40:01 · 7814 阅读 · 11 评论 -
STM32Cube 外部中断的使用理解
外部中断探索,CubeMX的前面基础操作我就不写了,外部晶振 串口之类的初始化操作这次需要PE13 PE14 PE15的外部中断检测开启在Cube MX中,外部中断就需要自己手动开启对应位置这里配置成下降沿触发中断,为了方便可以自定义上标签在gpio.c文件中可以找到生成的外部中断的初始化代码这里就是中断的函数了,HAL库这里有个特殊的回调函数,可以把很多操作写道回调函数里面,这里我们也要写到回调函数中我们在这里可以找到回调函数,HAL都已经写的非常模块化和人性化,这里的操作只需要写在原创 2020-09-10 15:37:59 · 989 阅读 · 0 评论 -
STM32CubeMX EC11旋转编码器开发心路历程(encode模式 外部中断模式 普通IO口模式 定时器模式探索)
对于旋转编码器,先来上板子的原理图接口本次的板子设计是使用了PE13和PE14的IO口,对应的也是定时器TIM1ch3 和TIM1ch4编码器开关的脉冲也如图所示,一会儿分析ENCODE模式探索接到任务后,就去各大论坛开始搜索关键词 Cube+编码器 ,然后出现了大量的关键词关于encode模式,经过了解发现这是stm32自带的硬件解码功能,需要使用高级定时器的ch1和ch2,然后我去查找了板子上的PE13PE14,发现了PE13 PE14是TIM1ch3和TIM1ch4,这就很尴尬,这里算是就原创 2020-09-10 15:27:22 · 12037 阅读 · 14 评论 -
STM32CubeMX外部中断定时器嵌套问题及实验现象
现在没有对下降沿触发这个动作进行消抖的判断,并且这么多天实验没有发现抖动现象,消抖的话我打算最后解决了嵌套问题后加上。目前TIM2定时器的抢占优先级和响应优先级是(1,1),GPIO抢占优先级和响应优先级是(2,2)这个部分的内容是写在HAL库的GPIO外部中断 EXTI15_10_IRQHandler10中的回调函数HAL_GPIO_EXTI_Callback中,HAL库的逻辑是执行完回调函数然后配置好了关闭中断的函数,所以一般不需要在回调函数里用完之后手动关闭。我现在的实现过程是:按照这个思原创 2020-09-10 10:47:48 · 3103 阅读 · 1 评论 -
STM32F407 DP83848驱动调试过程总结(标准库到HAL库移植避坑指南)
这个方法虽然没有成功,我也不知道哪里出现了问题,但是最后也没有原创 2020-09-03 11:22:47 · 8093 阅读 · 1 评论 -
STM32CubeMX ETH DP83848 + LWIP 完美ping通以及收发数据
这一篇准备把前面的LED和UART都整合到这个里面,然后实现DP83848的网口功能。来吧,从头开始软件的安装环境的搭建CubeMX安装教程及安装过程问题处理(cube打不开/cube无法生成文件/jre环境配置有问题)LED灯STM32CubeMX让我们的蓝色LED闪亮起来(胎教级包看包会不用懂原理)UARTSTM32CubeMX串口通信调试避坑(胎教级教程)EEPROMSTM32CubeMX的I2C初始化到EEPROM的正常读写详细的参照上面的三篇教程,一定注意GPIO口的匹配,开启原创 2020-09-01 16:29:54 · 11185 阅读 · 18 评论 -
STM32CubeMX的I2C初始化到EEPROM的正常读写
本篇文章来讲解I2C的配置以及EEPROM的调通,还是先来分析我们的原理图,了解要用到哪个引脚IIC对于EEPROM的读取,这里设计到IIC总线和寻址,具体的原理还有什么的可以去百度或者看手册,我就不说了。这里呢A0 A1 A2表示地址,0x00,这里后面要用到来寻址。了解了之后呢,准备去选择,配置RCC还有SYS的部分别忘了,我就不写了,前两篇文章都有过了因为要用到UART来打印结果,所以也不要忘记配置UART串口哦,这里可能会有很多的坑,我这篇文章写的比较详细,可以参考。STM32CubeM原创 2020-09-01 12:12:08 · 2830 阅读 · 0 评论 -
STM32CubeMX让我们的蓝色LED闪亮起来(胎教级包看包会不用懂原理)
对于LED灯这个还是比较简单基础的,首先是拿出我们的原理图,来知道我们是要操作那些端口让我们的小灯亮起来,以及高电平亮还是低电平亮。通过上图,我们可以知道要用到PF11、PF12 和PF15引脚这个应该是低电平亮,高电平灭有了这些理论知识,我们开始首先要配置外部晶振,我这里是25Mhz的外部晶振。这里因为我要用到网络部分,所以就先打开了Master Clock Output,因为网络模块没有使用独立的50MHZ晶振,所以使用STM32的MCO2输出50Mhz来驱动网口正常工作,也可以用MCO原创 2020-09-01 09:17:12 · 1450 阅读 · 0 评论 -
STM32CubeMX串口通信调试避坑(胎教级教程)
CubeMX 的下载还有安装的避坑上篇文章写了,有兴趣的可以去看,这里就直接用了。我的平台是STM32F407ZG,其他平台同理,没什么太大区别。好了,正片开始。这篇主要是UART通信,首先要配置外部晶振,我这里是25Mhz的外部晶振。这里因为我要用到网络部分,所以就先打开了Master Clock Output,因为网络模块没有使用独立的50MHZ晶振,所以使用STM32的MCO2输出50Mhz来驱动网口正常工作,也可以用MCO1。这里的详细倍频分频选择网口模块的配置再详细说明。不需要MCO输出频原创 2020-08-31 22:44:18 · 4456 阅读 · 11 评论 -
CubeMX安装教程及安装过程问题处理(cube打不开/cube无法生成文件/jre环境配置有问题)
配置Java环境 JRE通过这个地址,下载最新版JDKhttps://www.oracle.com/java/technologies/javase-jdk14-downloads.html这里我之前遇到一个坑,就是百度 JAVA下载不要去百度JAVA下载,如果仅仅是下载了上面这个,CubeMX软件启动就会出现 This application requires a java runtime environment 报错的字样按照一开始的地址,下载最新的JDK,下载安装完毕后,进行系统环境的原创 2020-08-25 20:32:04 · 14704 阅读 · 21 评论 -
STM32F4时钟系统笔记(重点标注)
STM32F4时钟树概述众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般都是采取多时钟源原创 2020-08-25 19:55:57 · 1133 阅读 · 2 评论 -
STM32音乐播放器实验源码FATFS部分函数理解
f_opendir首先是官网的一个对于代码的讲解The f_opendir function opens a directory.FRESULT f_opendir ( DIR* dp, /* [OUT] Pointer to the directory object structure */ const TCHAR* path /* [IN] Directory name */);ParametersdpPointer to the blank direct原创 2020-07-13 17:20:47 · 2546 阅读 · 0 评论 -
STM32 功率映射计算方法及调试验证
文章目录问题发现描述问题发现问题问题分析问题发现描述问题这次的这个问题起因是假负载屏的核心功能是显示功率,这个功率要通过AD9361把功率转换成0-4V电压,然后通过电位器,调节成0-3.3V电压,最后经过adc运放缓冲电路,送给ADC检测IO口。通过STM32的ADC检测功能,把功率再给反向映射出来。我的问题就是以为这个映射过程为线性过程,所以,直接使用0-3.3V的数值映射到0-4500W的数值进行显示,计算这个线性参数的方法也就是PU∗1000\frac{\text{P}}{\text{原创 2020-06-13 10:09:12 · 1320 阅读 · 2 评论 -
STM32 IO口初始化配置的一些理解
本次设计中需要的外围电路的输入以及输出,这里就以正点原子的库函数为例,进行IO口的初始化配置。首先,以继电器驱动为例,代表了IO口开漏输出,通过输出高电平,控制外围电路。void Relay_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABL...原创 2020-05-01 09:30:53 · 10057 阅读 · 0 评论 -
IIC通讯 | 基于STM32的LM75模块的使用以及故障排查
开幕先抱怨一下,小小模块没有说明文档,客服一问三不知,原理图也不提供,害人不浅,啊啊啊啊啊。最初的设计中,LM75模块的电路是设计在了板子上后来为了测温更加方便准确,选择了外接的方案,于是板子上只预留了相应的接口,并且对IIC SDA和IIC SCL进行上拉。为了方便以后的升级,在IIC总线上还预留上了EEPROM的位置因为沟通上出现问题,需要我自己来选购一个LM75温度模块进行外接......原创 2020-04-30 20:23:30 · 3576 阅读 · 11 评论 -
STM32 | 外部检测0V 5V电平信号输入的故障检测及排查
本部分的电路设计如图所示,主要是通过3.96插座,接收检测外来的0V或者5V信号,然后做出相应的动作。原理图中200欧姆电阻,主要起限流保护作用,同时这里使用了一个器件BAV99,他的作用在这里再复习一下:当正的静电发生时, D2 工作但D1不工作,因此这个钳位电压是5V加上D2的正向电压。当负的静电发生时,D1 工作但D2 不工作,因此这个钳位电压是D1的正向电压。如果放在接口电路部分...原创 2020-04-30 20:20:32 · 8448 阅读 · 0 评论 -
STM32 ADC缓冲运放电路以及编程实现
首先呢,说一下本外围电路的设计要求:需要检测4500W的功率,通过功率检测单元,对假负载输入的信号进行检波,将04500W功率参数转换为04V电压。使用的AD8361模块。然后在送入信号调理单元,这个部分的电路如上所示,通过电位器和运放跟随器,将04V直流电压转为03.3V并缓冲放大。(图画的比较早,主要是参考作用,实际过程复杂不少)通过调理电路后,送入MCU的ADC检测IO口,将输入的...原创 2020-04-30 20:18:59 · 6463 阅读 · 0 评论 -
Altium Designer | 从SCH原理图就得好好伺候外接IO口
外接的IO口,这里内容还挺多,一个个来盘吧.首先是检测口,这里主要通过一个2PIN的3.96插座,检测0V或5V的电压输入,根据信号MCU来做出判断在串口屏进行相应的显示.这里用到了几个细节,首先是200欧姆的电阻,用来限流,保护IO口,我这里为了安全,使用的也是兼容5V FT的IO口除了这些,IO口还并联了一个BAV99器件,BAV99这个元件的设计是出于ESD的考虑,怕信号线易受到ES...原创 2020-04-22 09:34:38 · 1471 阅读 · 0 评论 -
Altium Designer | PCB过孔和敷铜的小门道
敷铜之前先说一下打孔的一些问题,首先就是打孔的规则设定,对于本次的设计,信号线的打孔12/24mil,电源干线16/30mil。规则的设置如上,但是设置完规则,过孔还不能直接摆放,因为规则主要作用是来检查错误,需要点击过孔选项,然后按TAP这里呢,建议直接把阻焊都给勾选上,就是最后一个白色圆圈,一步到位,直接设置好。添加完阻焊的过孔在三维视图下可以很清晰的看到变化。对于阻焊作用如下:...原创 2020-04-20 12:50:00 · 8231 阅读 · 0 评论 -
Altium Designer | PCB布线规则那些事儿
本次设计是低频电路,为了更好的学习,有些布线规则遵循了高频电路的设计。或许有些繁琐,但总体看下来,感觉老师说的没错,电路的设计越规范,越稳定,性能越好。布线首先就是要确定规则,电源线,信号线的宽度,电源线原则上来说因为要走比较大的电流,因此需要宽,对于本次的低频电路,电源线使用30-40mil,信号线使用8-10mil,我选择了40mil和10mil的宽度。还有最重要的一点,就是引入到芯片管脚...原创 2020-04-19 17:03:48 · 4801 阅读 · 1 评论 -
电源12V稳压5V MP2359从数据手册到布线 经验分享
本次通过对MP2359的学习,主要学习体会了数据手册应该怎么正确的使用,如何正确的参考厂商提供的布局方案。数据手册提供了经典范例,实现了12V-5V的降压操作,以及其外围电路的设计,描述还是很详细的。之前忽略的Electrical Characteristics,现在再看,会清晰的看到,每个管脚的最大电压最大电流,布线中线路的宽度需要根据情况调整。接下来就是每个引脚的功能了,看得懂最好,...原创 2020-04-17 15:05:57 · 18401 阅读 · 9 评论 -
STM32 三极管继电器驱动电路设计
继电器线圈需要流过较大的电流 (约50mA)才能使继电器吸合,一般的集成电路不能提供这样的大电流,因此,必须要进行扩流,即设计驱动电路。三极管氛围NPN与PNP型两种,在使用中,我选择PNP型的S8550型号三极管。百度 三极管驱动继电器 ,可以得到大量的参考电路设计,虽然花样繁多,但是可用,靠谱的比较少,并且基本都是从两三篇转载而来,上图就是比较经典的一个设计。对于PCB的设计,要保持严...原创 2020-04-17 14:58:47 · 18695 阅读 · 13 评论 -
STM32迪文串口屏使用开发板进行调试方法以及错误
起初,以为串口屏配套的转接板可以配上开发板的串口下载线直接进行连接,通讯,如图所示.实际情况是开发板与串口屏无法正常通讯,只能正常点亮屏幕.原因是这款DMT48270C043_04WN的串口屏只支持TTL通信,开发板的232串口虽然是转接的开发板uart,但不是TTL通信了.并且转接板是跟电脑主机通讯的,屏幕和实验板的USB口都是USB设备,都只能和主机通信,两个USB设备之间是不能通讯的...原创 2020-04-03 10:15:19 · 3632 阅读 · 0 评论 -
STM32 串口屏T5UIC1通讯协议使用(含库函数)以及数据刷新去重叠方法
我的测试是基于STM32F407平台,直接将下面的库和头函数添加调用即可.我再使用中,需要通过串口通讯发送ADC数据到串口屏,这里因为要更新串口屏数字,因此如果直接显示,会造成数字重叠的情况,库函数中只能全局清屏,因此,使用矩阵,局部填充白色,先覆盖掉之前的数据,然后再显示新的数值,根据自己需要设置时间间隔选择串口,清屏,显示矩形,输出一串汉字 DWINLCD_Init(USART1...原创 2020-04-03 10:06:48 · 2607 阅读 · 1 评论 -
迪文串口屏,PC发送指令集调试出现的问题及解决方法
这里使用的是迪文的串口屏,T5UIC1芯片的,因为第一次接触,就买了全套的配件因为购买了转接板和USB线材,就想着先用PC端发送指令集,将串口屏先调通,了解指令集的操作。官方给的指令集手册是这样的,全是16进制的指令,起初,我想当然以为和开发板的串口通信一样,通过uart转232串口直接发送字符就可以了.但是我通过串口助手,发送了握手的指令集给串口屏,但是没有收到握手成功的指令.这里...原创 2020-04-03 09:54:04 · 4122 阅读 · 2 评论