- 博客(354)
- 资源 (166)
- 收藏
- 关注
原创 STM32F407单片机HAL库CAN2不能接收数据解决方法
下面就就是can的时钟,这里要注意一个就是使用can1的时候,开启can1的时钟就行,但是使用can2的时候,也必须开启can1的时钟。在can的控制器中,存储访问控制器是由can1控制的,当使用can2的时候,can2要访问存储访问控制器时,必须通过can1才能访问,所以使用can2的时候,can1为主机,can2为从机。当使用can2的时候,直接将值设置为14。的值就很关键了,这个值的含义是,从机滤波器的起始地址,那么当使用can2时,can2就是从机,那么这个值就是can2滤波器的起始地址,而上面。
2023-05-27 17:08:41
682
原创 jlink-v8刷固件及解决keil报错 j-link is defective,j-link clone
今天在调试STM32F407的程序时,下载程序时突然keil识别不到jlink了,还以为是驱动的问题,重新装了好几次驱动,结果还是不行,于是就网上找各种办法,最后决定重新刷固件。网上的方法很多,好多都失败了。现在把我刷成功的过程分享给大家。
2023-05-26 20:59:34
592
原创 STM32F407+LWIP+DP83848以太网驱动移植
最近有个项目上需要用到网络功能,于是开始移植网络相关代码。在移植的过程中感觉好难,网上找各种资料都没有和自己项目符合的,移植废了废了好的大劲。不过现在回头看看,其实移植很简单,主要是当时刚开始接触网络,各种新的知识和概念扑面而来,加上LWIP这个协议的相关资料,一下接触的太多,大脑已经混乱了。所以就感觉很难,当各种逻辑梳理清楚的时候,移植起来就很简单了。
2023-05-20 14:10:32
599
原创 如何使用Understand软件查看STM32单片机HAL库函数调用关系
但是Understand软件在工程代码中却找不到这两个宏定义,所以就默认这两个宏定义没有定义,相关的代码就不会被编译。在使用STM32单片机的HAL库函数编程时,会发现好多中断函数里面都有各种回调函数,还有好多函数的调用深度比较深,在编写代码的时候,有时候想查看某个函数是如何被调用的,查看起来非常麻烦。通过这种手动增加宏定义的方法,就可在Understand软件中查看HAL库函数的调用关系了,通过图形化的界面帮助我们在写程序的时候更加高效。函数,而这个函数又调用了can.c文件里面的。
2023-05-17 21:56:58
476
原创 stm32f407单片机上通过HAL库实现can总线数据的收发
最近在使用can总线,由于这个以前接触的比较少,所以调试代码的时候直接是下载的正点原子的例程,在这个基础上修改调试的。现在将调试中遇到的问题,总结一下,避免以后踩坑。目前写了一个查询方式的,一个中断方式的。
2023-05-17 20:11:23
399
原创 如何使用Wireshark软件分析TCP协议
在学习网络相关知识的时候,需要对网络协议进行分析。网络协议分析软件用的最多的就是 Wireshark 这个软件,今天就简单总结一下如何使用这个软件进行TCP三次握手和四次挥手的查看。
2023-05-14 15:30:34
560
原创 使用Advanced Installer软件将winform程序打包成exe安装文件
于是想着要给别人发送程序时,能不能直接发送一个安装包,不管什么系统,安装包在安装的时候自动下载需要的.net环境,而vs默认没有提供程序直接生成exe安装文件的功能。在使用vs编写c#代码时,一般都是在debug文件中双击exe文件就可以执行,但是有时候需要将这个exe文件发给别人使用,在自己的电脑上exe文件可以执行,但是在别人的电脑上有时候打开后会报错,提示缺少.neta运行环境,还需要单独去下载.net环境。选择好之后点击下一页。这个安装路径也是刚才在打包的界面中设置的路径,直接点下一步。
2023-05-14 12:10:31
180
原创 TCP协议三次握手四次挥手详细分析
服务器收到客户端的SYN包之后,必须确认客户的SYN,也就是将客户端的上次发来的序号加1,上次客户端发来的序号是1213270320,加上1之后是1213270320=1,同时自己也发送一个SYN包,即SYN+ACK包,由于由于服务器是第一次给客户端发送数据,所以服务器也会随机生成一个序号6510,此时服务器进入SYN_RECV状态;客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,第二次握手时服务器发来的序号为6510,所以本次向服务器确认时,需要将服务器的序号加1返回,也就是返回6510。
2023-05-10 22:38:37
517
原创 嵌入式代码查看分析利器---Understand
平时在开发嵌入式程序的时候大多数使用的都是keil软件,一般小的工程使用keil没感觉到有什么问题,但是当工程比较大的时候,比如移植了FreeRTOS系统或者LWIP网络系统时,代码全部编译一次就要花费很长世间,特别是开启了点击函数右键跳转的功能之后,速度更加慢。通过上面这个6种功能,可以对main函数和其他函数的调用关系进行各种方式的分析,让我们对这个工程代码能进一步的深入了解。如果想进一步了解这个函数的其他信息,可以在这个函数上单机鼠标右键,在属性中查看,这里就不再一一列举了。
2023-04-29 13:16:01
2167
12
原创 使用SPICE Explorer 软件查看示波器csv格式波形文件
平时调试电路的时候,经常需要将示波器的波形保存下来,保存的照片经常局部细节看不清,分析电路的时候不方便。示波器也可以将波形保存为csv格式的文件,这个文件可以使用表格打开,但是通过表格查看数据也很不方便。无意间在发现使用SPICE Explorer这个软件可以直接查看csv格式的文件,在这个软件里面可以缩放波形,查看波形的细节。需要点开csv文件前面的加号,选择toplevel,这时候左下方就会出现波形中保存的通道号。使用刚才复制的网卡地址替换第一行的网卡地址,然后保存文件。点击exe文件进行安装。
2023-03-16 16:55:31
462
原创 STM32F407软件仿真时不能进入main函数解决方法
最近在用keil软件仿真功能仿真STM32F407单片机时,发现进不到main函数位置处。下来点OK按钮,保存设置。这时候再使用软件仿真的时候,就可以直接进入到main函数中了。开始仿真的时候总是卡在Wait till HSE is ready 这块。网上找了好久解决方法,总算是搞定了。接下来在keil软件中点击魔术棒工具,切换到Debug选项设置界面。然后使用记事本打开该文件,在里面输入下面的内容。然后选择keil安装目录下的这个。接下来打开keil的安装目录。复制到keil的安装目录中。
2023-03-07 16:52:10
662
2
原创 STM32系列单片机标准库移植FreeRTOS V10.4.6详解
最近看正点原子新录制了手把手教你学FreeRTOS的视频教程,看了一下教程发现视频里面讲的是使用HAL移植 FreeRTOS V10.4.6 版本,以前的标准库移植的是FreeRTOS V9.0 版本。而自己平时写代码使用的都是标准库,就想着能不能把FreeRTOS V10.4.6 版移植到标准库中去。为了移植简单,直接下载正点原子的代码在上面修改。
2023-01-07 15:48:46
3308
2
原创 好用的翻译软件---知云文献翻译
对于搞技术的人来说,英语是逃不过去的一关,但是有的人英语底子弱一点,在开发的过程中如果需要看英文文档的时候,是非常痛苦的。特别是好多词汇是准用词汇,如果直接用翻译软件翻译的话,翻译出来的往往都是驴头不对马嘴,所以经常只能用翻译软件一个单词一个单词的去看意思,然后自己再把单词组合起来去理解。这样可以根据自己的需求随时翻译需要的地方,可以每次翻译一个单词,也可以每次翻译一段话。打开PDF后,需要翻译的时候用鼠标选中内容,右边就会自动翻译,如果不需要翻译,就不用操作。同样在网页中查看的时候,它也可以翻译。
2022-12-08 16:39:31
986
8
原创 通过动态图形感受数学之美
这两天正在使用PTC Mathcad 软件,它可以通过公式绘制出对应的曲线,通过曲线更容易的去理解公式中各种参数的含义。可以看到这个软件的函数和绘图功能是非常好用的,唯一的缺点就是:当参数范围比较宽的时候,要观察很多条曲线的叠加的效果,就得手动添加许多条轨迹。操作起来,工作量比较大,今天在网上无意间发现了一个网站,也可以通过公式绘图,而且支持参数动态变化,生成的图形也会动态变化。这个功能可太强大了。网站名称叫做 Desmos 免费领略数学之美。
2022-12-08 11:03:08
330
原创 使用 PTC Mathcad Prime 软件绘制电源谐振Q值曲线
最近在学习电源谐振电路,每个电源资料上都会出现一个电源的谐振曲线图。如下图所示。 基本上每个资料都是围绕这个图来分析谐振点的,一直很好奇这个图是怎么制作出来的。在网上搜了好多资料都没找到这种图的详细制作步骤。于是自己研究了一段时间终于发现这个图是用 PTC Mathcad 制作出来的,下面就详细讲一下制作步骤。 这个软件下载地址为: PTC Mathcad 在官网上下载安装就行,安装步骤这里就不详细说了。 安装完成后打开这个软件 接下来按照电源资料上的公式在这个软件中输入公式。
2022-12-07 14:33:29
726
原创 PDF文档一键自动生成目录和书签
在工作中经常会遇到编写文档的时候,当我们在word编写完文档后,一般可以自动生成一个目录。为了方便阅读和保护文档不被破坏,一般发送给别人的时候,需要把word文档转换成PDF格式。但是word文档转换为PDF格式后,目录虽然依然存在,但是在PDF阅读器的书签栏看不到目录,为了方便阅读,我们希望能将文档的目录自动添加到PDF的书签中去。 下面我就详细演示一下,如何在word中自动生成目录,同时将word文档转换为PDF文档后,自动生成书签。 首先编写word文档。 在编写文档的时候要注意使用标题来区
2022-12-06 10:32:56
4875
2
原创 由一个按键程序引发的思考(下)
上文[由一个按键程序引发的思考(中)]讨论了如何实现按键单次按下后能立即执行按键动作,同时又能滤除掉按下时间非常短的无效按键。但是在实际项目中,一个按键往往会具有多种功能,可以通过单击、双击、长按等方式切换不同的功能。 那对于单击、双击、长按这些功能要如何有效区分呢?下面就从按键的波形和判断逻辑来讨论这三种情况如何区分?
2022-11-05 11:55:29
499
3
原创 由一个按键程序引发的思考(中)
按键的波形无非就是高、低、高三种状态。要判断按键从根本上来说就是对这三种状态的检测和分析。由于按下未按下时和弹起时都是高电平,那么直接通过电平判断不能有效区分这两个高电平的状态,就不能直接同电平来判断。观察按键波形可以发现,按键按下的一瞬间电平出现了下降沿,按键弹起的一瞬间出现了上升沿。这样通过上升沿和下降沿就能区分出按键按下或者弹起。
2022-10-30 10:24:09
1856
9
原创 由一个按键程序引发的思考(上)
说起按键程序,只要会单片机的肯定都很熟悉。一般开始学习单片机的时候,入门程序基本都是LED灯和按键。那么这个按键程序有什么特别的吗,还需要专门去思考吗?如果我刚开始学单片机的时候也会这么想,但是随着项目的积累,经验的增加,越来越觉得`复杂的事情简单做,简单的事情复杂做`,这句话很有哲理,越是看起来简单的事情,真正做好却很不容易。下面就抽丝剥茧的来慢慢分析下这个按键程序有什么特别之处。
2022-10-29 19:21:35
2964
6
原创 从代码层面分析STM32 标准库和HAL库的差异
相当于每个设置都是独立的函数。HAL库将一段代码通过宏定义的方式封装成了一个函数,每个端口的时钟都单独的定义了一个名称,标准库是一个独立的函数,通过参数传递的方式来设置每个端口的时钟。这两个版本的函数本质上操作的还是寄存器,不过HAL库操作的只是BSRR寄存器,而标准库端口置1的时候操作的是BSRR寄存器,端口清0的时候操作的是BRR寄存器。标准库设置端口模式的时候,是在if语句中判断之后直接设置的,而HAL端口模式设置时,却使用了switch语句去设置,说明在HAL库中,端口模式和标准库中发生了改变。
2022-09-08 20:24:41
8187
5
原创 在嵌入式开发中如何提高自己的代码水平
但是随着项目的增加和需求的各种变化,就会发现,第一种代码修改起来比较麻烦,比如LED口发生了变化,那么头文件和和初始化函数都需要修改,变动一次要修改好几个地方,修改的时候容易漏掉有些地方,导致调试起来各种问题不断,增加了调试的难度。如果感觉自己的技术比较好了,那么就可以去看库函数的源码,或者操作系统的源码,看看官方的源码是如何将不同类型不同型号的单片机抽象为统一的函数。如果哪天你看到别人的代码之后,一眼就能看出代码的优缺点时,那么就说明你的水平已经很高了,已经突破了自己的瓶颈了。这是 led.h 的代码。
2022-09-07 19:37:43
34538
42
原创 为什么要在单片机程序中使用结构体和指针
在刚开始学习单片机写程序的时候,大多数人都比较喜欢使用全局变量。因为这样写程序写起来比较简单,也容易理解。但是看官方例程的时候,大多数都喜欢使用结构体和指针。感觉指针和结构体看起来麻烦,写起来更麻烦,往往都是一长串字母。但是为什么官方都爱这样用呢?这样用的好处是什么,自己写程序怎么才能写成这种方式。下面通过一个实际的工程例子来说明,如何一步一步将全局变量改为指针和结构体的方式。
2022-09-05 14:18:15
3450
11
原创 使用KiCad插件,将PCB焊接可视化
通常在第一次调试电路的时候,PCB板都是手动焊接的,在焊接的时候,通常都是打印出来器件清单,然后对照着器件清单,在PCB上依次查找需要焊接的元件,然后将对于的元器件焊接上去。如果电路板元器件比较少的时候,这样焊接起来还好,如果器件数量比较多时,每次寻找器件的位置都要花费好长时间。当然也可以在电脑上直接搜索元器件的位置,但是这样每焊接一个器件就要在电脑上搜索一次也比较麻烦。有没有更好的方法来解决这个问题呢?当然是有的,这里推荐使用KiCad的元器件清单可视化插件,将焊接的Bom直接变为可视化。 ...
2022-07-11 13:48:10
1816
原创 STM8单片机低功耗---活跃停机(Active Halt)模式实现-3
在STM8单片机上使用低功耗模式中的活跃停机模式实现LED灯的闪烁,在IAR编译器上使用寄存器开发。
2022-04-22 11:33:17
1019
原创 STM8单片机低功耗---活跃停机(Active Halt)模式实现-2
AR开发环境中在STM8S003单片机上实现低功耗模式 活跃停机 Active halt,使用寄存器开发。
2022-04-22 09:49:32
1178
1
原创 STM8单片机低功耗---活跃停机(Active Halt)模式实现-1
IAR开发环境中在STM8S003单片机上实现低功耗模式 活跃停机 Active halt,使用寄存器开发。
2022-04-21 16:45:16
1441
原创 PSIM软件BUCK转换数字控制官方例程
在使用PSIM软件仿真开关电源时,大多数都是模拟电路,纯数字电路的仿真很少。无意间发现了在PSIM 2021版本中有官方的数字控制BUCK电路仿真。电路使用简单C模块编写的代码来控制电路。 由于下载的2021版是演示版,不能直接仿真,为了能够彻底的学习,于是将电路图和程序移植到了9.1版本中。现在将电路和代码分享出来。 2021版官方例程 由于软件是演示版,有限制,所以不能仿真。 于是将电路图和代码移植到 PSIM 9.1 版本上 硬件电路如下: 首先使用电路传感器读取电
2022-03-01 16:44:02
2627
2
原创 PSIM软件中 Simplified C Block模块 和 C Block模块区别
在使用PSIM的C语言模块时,一直以为Simplified C Block模块 和 C Block模块用法基本是一样的,但是今天在仿真BUCK电路时,同样的代码使用C Block模块仿真结果就正常,使用Simplified C Block模块仿真的结果始终都不对。于是通过几个小测试,发现这两个模块使用起来差别还是挺大的。 下面就来分析对比一下这两个C模块的区别。 分别使用 C Block模块和Simplified C Block模块写个简单的测试程序。 在 C Block模块中,初始
2022-02-18 09:03:19
2401
原创 C语言学习笔记---字符函数isalnum()和iscntrl()
isalnum() 函数用于检查所传的字符是否是字母或者十进制数字。它的函数原型如下: _CRTIMP int __cdecl isalnum(int _C); 返回值为非零(真)表示参数c是字母或者十进制数字,返回值为零(假)表示参数c既不是十进制数字,也不是字母。 下面通过一个简单的例子来演示它的用法。#include <stdio.h>#include <ctype.h>int main(){ int var1 = 'a'; int va
2022-02-17 08:45:45
254
2
原创 C语言学习笔记---浮点函数floor()和ceil()和浮点数四舍五入
在上一篇文章中已经了解了浮点数在计算机中的存储原理,同时也介绍对浮点数取整和取余的函数.在C语言标准库里面还提供了对于浮点数取整的两个函数。函数原型如下: double __cdecl ceil(double _X); double __cdecl floor(double _X); ceil函数返回大于或等于 x 的最小的整数值。下面通过一个简单的例子,演示一下ceil函数的用法。#include <stdio.h>#include <math.h>int
2022-02-17 08:43:59
643
原创 C语言学习笔记---浮点函数modf()和fmod()
modf函数可以提取出浮点数的整数部分和小数部分。fmod函数可以返回两个浮点数相除的余数。它们的函数原型如下: double __cdecl modf(double _X,double *_Y); double __cdecl fmod(double _X,double _Y); 这两个函数的功能看起来都挺简单的,但是为什么在C语言库中还要专门搞一个函数来计算呢?在使用这两个函数之前,首先看一个简单的浮点数相关的例子。int main (){ int i; float j=1.0
2022-02-17 08:42:42
903
STM32单片机实现DMA+ADC+UART功能
2020-12-31
手把手教你移植rt-thread
2020-12-10
stm32f103c8t6+ESP8266 模块设置为Station模式并连接原子云
2020-12-08
stm32f103c8t6+ESP8266 模块设置为Station模式向电脑发送数据
2020-12-08
stm32f103c8t6+ESP8266 模块设置为Station模式向手机热点发送数据
2020-12-08
STM32F103用串口空闲中断+DMA实现modbus通信示例
2020-10-16
FPGA IIC通信EEPROM仿真模型
2020-08-18
FPGA 多按键抖动检测
2020-08-05
STM32标准库移植FreeRTOS V10.4.6步骤及资源
2023-01-07
STM8单片机通过PWM波触发定时器采样
2022-02-10
STM8单片机通过定时器触发ADC采样
2022-02-10
STM8单片机自制简易温度巡检仪
2021-11-25
STM8单片机ADC连续扫描模式并开启模拟看门狗功能 #资源达人分享计划#
2021-08-05
STM8单片机ADC单次扫描模式并开启模拟看门狗功能 #资源达人分享计划#
2021-08-05
STM8单片机ADC连续采样使用模拟看门狗功能 #资源达人分享计划#
2021-08-05
STM8单片机ADC单次采样使用模拟看门狗 #资源达人分享计划#
2021-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人