STM32
无锡的张工
这个作者很懒,什么都没留下…
展开
-
存一个滤波器的截图。免的过段时间忘了
没有原创 2023-11-18 12:20:39 · 136 阅读 · 0 评论 -
温度、机械振动等对电子产品的影响
温度对电路板的影响原创 2023-11-17 12:12:13 · 676 阅读 · 0 评论 -
STM32的HAL库的定时器使用
单片机定时器中断原创 2023-08-31 09:21:57 · 848 阅读 · 0 评论 -
削波导致的振动值偏小
无原创 2023-01-03 14:03:19 · 210 阅读 · 0 评论 -
稍稍优化一下4-20mA变送电流
无原创 2022-12-14 15:36:04 · 340 阅读 · 0 评论 -
记录一个测试接近开关时遇到的小问题
接近开关测转速原创 2022-11-30 09:13:39 · 295 阅读 · 0 评论 -
简单的PWM,竟然被一个互补通道坑了2个小时
有个新板子,需要输出一个PWM信号。感觉很简单,HAL库里面将TIM2配置一下就完了,然后main里面加个PWM的启动函数就好了。因为之前别的板子做过,我就直接拿以前的程序过来抄了一下,它的启动函数是这样的:HAL_TIMEx_PWMN_Start()。然而PWM信号死活出不来,找了好久,才发现这个是互补通道用的,常规的用:HAL_TIM_PWM_Start()就好了。HAL库感觉用起来挺方便,但是不太熟悉的话又好多小陷阱。交流一些STM32有关的东西,欢迎大家进来摸鱼。原创 2022-10-20 08:18:37 · 783 阅读 · 0 评论 -
STM32L431用cubemx软件生成的代码BUG(ADC的BUG)
昨天有个板子是STM32L431的芯片,我用CUBEMX软件生成代码后,ADC的调试一直不对。仿真时可看出ADC就采样一次,然后就不工作了,采样1次的AD值也不对;观察ADC的寄存器发现溢出标志位就置1了。这是ADC在软件上面的配置:这个是DMA的配置:生成的代码和以前正常的代码比较起来,初始化部分都没啥问题,但ADC就是不能正常工作。查看STM32自动生成代码后发现DMA时钟使能在ADC初始化使能之后:DMA的初始化是在MX_ADC1_Ini...原创 2022-04-07 10:39:13 · 1686 阅读 · 2 评论 -
摸着W5500学习计算机网络2----用wireshark抓个ping包玩玩
W5500初始化后,用网线直接连接了W5500开发板和计算机。W5500的基本信息是IP:192.168.1.13计算机的基本信息是IP:192.168.1.22他们的子网掩码和网关设成一样的。分别为子网掩码255.255.255.0。网关:192.168.1.1然后我用计算机ping了一下W5500开发板,发现可以ping通。这个ping到底是个什么东西...原创 2019-07-17 21:56:22 · 928 阅读 · 0 评论 -
摸着W5500学习计算机网络1——W5500初始化
有个大神说W5500有官方的库,可以“开箱即用”。可是打开箱子我发现,完全看不懂啊。毕竟不懂计算机网络,里面很多的术语就搞不明白。再打开W5500的数据手册,发现什么MAC、ICMP之类的东西,完全不明白是什么意思。所以我打算学习一下《计算机网络》,边学网络,边用W5500来验证验证,也许是不错的尝试。好的,那就开始吧。刚拿到W5500,看了下手册,发现各种看不懂。不过官方有对应...原创 2019-07-17 21:44:13 · 2537 阅读 · 0 评论 -
ADXL345静止时振动值不归零的问题
最近在调一个ADXL345模块,用它来测试振动值。经过之前的摸索,这个芯片测得振动值倒还大致对的上。但是发现它静止的时候,还是有振动值在跳。小的0.1,0.2这样的跳动,大的就跳到1点几了。 经过不断的断点跟踪,我发现振动值大的时候,采集到的数据里面都会有几个奇异值。比如静止不动时,正常的数据一般都是250左右,但是偶尔会冒出来一两个0,或者是500这样的值。这一两个奇...原创 2019-03-28 08:48:01 · 2224 阅读 · 9 评论 -
工作中经常遇到的232、485、TTL信号
今天在调试一个仪表,该仪表的通信脚直接是单片机出来的TX和RX脚;需要将这个仪表和液晶屏通信,液晶屏上是485通信。一开始没注意这个,直接将液晶的485串口的A、B先接到的TX和RX脚上面。然后就发现仪表能够接收到液晶屏发过来的数据,但是液晶屏收不到仪表发给它的数据。后来领导过来说,单片机的TX和RX脚上是TTL信号,和液晶串口的485信号是不一样的,它们物理层就不一样。如果要能正常通信,需要一个...原创 2019-01-18 14:52:43 · 13535 阅读 · 0 评论 -
遇到一个STM32中断的坑,记录一下(和NVIC的抢占位设置有关)
事情是这样的,我有个仪表没有按键没有显示,所有的参数和校准等操作都要通过485来实现。我把以前的代码拷过来直接用,大致的代码如下图:而校准程序大概如下: 调试的时候发现,用串口发送校准命令的时候,程序就挂在了while(ADC.flag==0)上面。经过一番检查,发现我这ModbusWrite()函数本来就属于TIM4的中断服务函数,而我确要在TIM4的中断服务函数里面等待只...原创 2018-09-18 14:36:03 · 7999 阅读 · 0 评论 -
将板子芯片从ST32F101改为STM32F103要改的地方
公司的仪表以前用的STM32F101的芯片,但是最近开始都改用STM32F103了,晶振也从11M改成了8M。然后很多老的程序都要改一些参数什么的。这里记录一下,下次再遇到直接照着改改就好了。1、首先是options下面的”Device”,直接换成F103RC就好了。 2、在DEBUG标...原创 2018-09-03 09:45:21 · 4216 阅读 · 0 评论 -
ADXL345调试心得
这几天测试了ADXL345,记录一下1、关于初始化 一般初始化0x31、0x2d、0x2c、0x2e、0x38就行了,它们分别是设置量程、工作模式、数据速率、中断及FIFO。2、关于灵敏度。手册上写灵敏度a=256LSB/g,这是在2.5V时测的。在文档的某个角落里写了,3.3V供电时,灵敏度a=265LSB/g。 另外,3.3V供电比2.5V时噪声要小。3、注意S...原创 2018-07-03 10:05:58 · 24025 阅读 · 17 评论 -
STM32F0非对齐访问引起的硬件错误及其排除
前段时间在用STM32L0芯片时遇到一个硬件错误,主要是内存的非对齐访问导致的。注:CM3内核支持非对齐访问,而CM0不支持非对齐访问。先科普一下,什么是非对齐访问如上图所示,若要访问的变量是int、double、u32类型的(占4字节),则这些变量在内存中,只能以图中0、4、8为起始地址;若要访问的变量是short、u16类型的(占2字节),则这些变量在内存中,只能以0、原创 2016-09-28 21:41:01 · 5791 阅读 · 0 评论 -
记一次失败的PCB画板教训
在十一前初试身手,画了一个STM32的板子。然后今天准备调试一下,上电后发现电源模块出来的12V电压量不到。量下来只有零点几的电压,而且听到“啪嗒啪嗒”的声音。赶紧断电,检查一番后,一时也没发现哪里出错。后来将7805和另外12V电源用到的部分都拆了,发现还是不行。 原理图如下:其中这个P6KE是分方向的,而我的封装库却没有标明正负极,这样车间的焊接人员就给我焊反了,导致原创 2016-10-08 19:28:56 · 3308 阅读 · 0 评论 -
STM32--今天下午遇到了两个BUG。记录一下(栈溢出和串口调试)
1、栈溢出调试时发现有个调节PWM占空比的参数会莫名其妙的乱跳。观察代码,求这个系数的函数只在系统初始化的时候求过一次,之后就再也没有调用过。单步执行代码,发现初始化时第一次运行时求出的系数是对的,但是全速运行后,这里面的系数就变了。既然我没有调用函数来修改这个值,那肯定是被别的区域的值覆盖了。打开map文件,看一下Trans_1_BaseStructre这个结构体周围原创 2017-04-27 12:37:15 · 5338 阅读 · 5 评论 -
STM32读写24C02遇到的问题
这几天在弄I2C,读取24C02的数据。我默默的敲完了代码,然后仿真。代码就下面两行,就是写一个字节,然后读取。I2C_EE_BufferWrite( &write,100, 1);I2C_EE_BufferRead(&read,100, 1); 然后就是各种不对,经过跟踪发现程序挂在了读上面。具体的发现读数据的时候,刚发送了起始信号后就死掉了。百思不得其解。然原创 2017-08-26 09:30:36 · 5315 阅读 · 3 评论 -
STM32更换晶振后没及时修改定时器参数,导致运算出错
记录一下今天的惨痛经历。之前板子上面是11.0592M的晶振。现在把晶振换成了8M的,这样9倍频后可以跑72MHz.但是我换了晶振后,没有及时修改TIM2里面进中断的时间,导致后面的一系列的运算出错。而且我排查了两个小时,一直没想到是这个参数错了。还有就是keil5软件总体上比keil4好用很多。但是之前keil4有个满好的功能,就是在仿真的时候吗,它的外设选项点开后,能显示各原创 2017-02-20 21:08:03 · 1932 阅读 · 2 评论 -
初学SDRAM笔记3--SDRAM的命令
接下来我们来看一下SDRAM的几个命令。初始化时的自动刷新、空操作、预充电等,都是这几个命令里面的。而这些命令是由信号线的状态组合产生的,具体见下图:1、命令禁止 只要CS引脚为高电平,即表示“命令禁止”。它用于禁止SDRAM执行新的命令,但它不能停止当前正在执行的命令。2、空操作 “空操作”,它是“命令禁止”的反操作,用于选中SDRAM,一原创 2018-01-20 20:36:53 · 2063 阅读 · 0 评论 -
初学SDRAM笔记5--配置FMC的SDRAM初始化结构体
大概搞清了一些比较重要的时序后,SRM32F429的FMC还有个SDRAM初始化结构体需要配置。这里面的参数我们一个一个来看。1、FMC的SDRAM存储区域,可以选区域1或区域2。 下面是资料上的: FMC把SDRAM的存储区域分成了Bank1和Bank2两块,这个的Bank与SDRAM芯片内部的Bank是不一样的概念,只是FMC的地址区域划原创 2018-01-31 08:26:47 · 2070 阅读 · 0 评论 -
初学SDRAM笔记1--SDRAM的初始化过程
2017年的9月份我学习了怎么操作SDRAM,然而仅仅过了三个月,现在就忘的一干二净了,又得从头来起。这个元件目前在工作中用不到,所以平时不接触就忘的快了。 这次我再次来操作SDRAM,把学习的经过记录下来,而且写的尽量详细一些。这样下个月、下下个月再要用它的时候,只要翻翻这些笔记就行了吧。 首先要了解的SDRAM的初始化流程: SDRAM并不是上电原创 2018-01-20 15:46:22 · 7266 阅读 · 0 评论 -
初学SDRAM笔记2--SDRAM的信号线及结构图
在“自我刷新”资料里,多次的提到CKE信号线。那我们就来看一下SDRAM的信号线吧。可以看到CKE是时钟使能。正常使用期间这个信号线都处于高电平。其他的都是常规信号线,如时钟线,行选通,列选通,地址线,数据线,写使能等。 既然说到了信号线,就来顺便看一下SDRAM芯片内部的结构框图:下面稍微解释一下这个结构框图1、逻辑控制原创 2018-01-20 19:36:58 · 7022 阅读 · 1 评论 -
初学SDRAM笔记4--初始化时序结构体
这个结构体里还有几个延时没说到,现在来看一下。1、TRCD 行到列延迟 在发送列读写命令时,必须要与行有效命令有一个间隔,这个间隔被定义为TRCD,即RAS to CAS delay,也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。TRCD是SDRAM的一个重要的时序参数。通过查询数据手册可知,tRCD为15原创 2018-01-30 10:46:13 · 1600 阅读 · 0 评论 -
NOR flash和NAND flash的区别
最近学习flash时,说W25Q64是NOR flash。这个NOR flash和NAND flash的概念一直搞不清,下面是查询的相关资料。1、结构方面: NORflash采用内存的随机读取技术。各单元之间是并联的,对存储单元进行统一编址,所以可以随机访问任意一个字。 既然是统一编址,NORflash就可以芯片内执行,即应用程序可直接在flash内运行,而无需先拷...原创 2018-02-28 08:24:56 · 12735 阅读 · 0 评论 -
STM32的HAL库初体会
最近有个小项目,通过串口发命令来控制电路板上继电器动作。板子上的芯片是STM32F030。这款芯片以前用过一次,但是还是不熟悉。选它的原因是功能够用,而且便宜,比经常用的STM32F103便宜好多。 我在官网下载了F030芯片的标准库,然后就照着标准库的流程来初始化串口。但是不管我怎么搞,就是发不了数据,也收不了数据。卡了我好几天。 后来一想,可以用HAL库试试。然后在CUBE...原创 2018-03-22 08:01:33 · 3399 阅读 · 0 评论 -
我的STM32入门经验
我大学学的物理学,算是学过一些模电和电路方面的知识把,计算机二级考的VB。毕业后的工作是技术支持,写写方案、处理一些售后问题、或者出出差。反正不是搞开发,三极管什么的完全不认识,从来没摸过C语言。 我在2014年7月份找到了一份单片机开发的工作,也开始了我学习STM32的过程。下面是我这个纯新手的学习过程: -_-! 2014年下半年把电路、数电、模电三本书都过...原创 2018-05-26 16:03:37 · 17555 阅读 · 8 评论 -
记一次“粗暴”的Flash模拟EEPROM法(用的STM32F030C6芯片,没找到模拟EEPROM库函数)
记一次“粗暴”的Flash模拟EEPROM法 有个项目用的STM32F030的芯片,有2个参数需要存储,但是画板子的时候没有外加FLASH或24C02芯片。像平时用的多的STM32F1芯片,有专门的flash模拟eeprom库函数,直接调用库函数用用就好了。我在网上找了许久,也没找到STM32F0对应的库函数,而且我还是用的HAL库。 单片机内部是NORflash,...原创 2018-05-26 16:42:25 · 11252 阅读 · 2 评论 -
C-关键字之volatile
在上个文章里提到了volatile关键字,这里进行一下总结。里面有网上查到的,也有我使用STM32单片机时关于volatile的心得。 Volatile总是和优化有关,编译器有一种技术叫数据流分析,分析程序中变量在哪里赋值,在哪里使用。但这时有些优化并不为程序需要,这时可以用volatile禁止做这些优化。Volatile的字面含义是易变的。它有以下作用:1、不会在两个操作之间把volatile变...原创 2018-05-28 09:06:54 · 363 阅读 · 0 评论 -
关于MODBUS RTU的T3.5 、T1.5的时序问题
先看一下MODBUS协议里面关于这两个重要的时序是怎么写的: 在RTU模式,报文由时长至少3.5个字符时间的空间间隔区分。如下图: 整个报文帧必须以连续的字符流发送,如果两个字符之间的空闲大于1.5个字符时间,则报文帧认为不完整,应该被接收点丢弃。 注意:RTU接收驱动程序的实现,由于T1.5和T3.5的定时,隐含着大量对中断的管理。在高通信速率下,这导致CPU负担家中,...原创 2018-06-05 15:51:37 · 12605 阅读 · 3 评论 -
用STM32仿真时遇到的两个问题(仿真进不去)
1、最近在用试验板仿真的时候,经常会连接不上,keil中魔术棒里面的参数也都是对的。这样用了两天,彻底连接不上了。 经过检查,板子的5V、3.3V电源都是正常的。更换了一块芯片后还是连不上。用万用表量了下SWDIO、SWCLK引脚,发现SWDIO脚和仿真的接线端子不通,把焊盘、引脚都重新焊好了还是不行,大概是焊盘出了问题,最后直接飞线到SWDIO才搞定。 教训原创 2016-09-12 10:58:35 · 10701 阅读 · 0 评论