自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

城南花已开的博客

记录每一次小小的进步!!!

  • 博客(60)
  • 收藏
  • 关注

转载 HardFault_Handler问题查找方法

在开头加上0x 后将从图中6处复制的地址粘贴,得到如图中7处所示的数据。3.由于异常发生时,内核将R0~R3、R12、R14(LR)、PC、XPRS寄存器依次入栈,其中R14(LR)即为发生异常前PC将要执行的下一条指令地址。取Memory1的0x200006B8地址中的第6个地址,即图中6处08000A15。2. 打开Memory窗口,将MSP对应的值0x200006B8输入至Memory窗口的Address出(图中5),进行查找。通过R14(LR)即图中2处的值,可确定在MSP(主堆栈)。

2023-06-01 11:03:05 1750 1

转载 c语言栈溢出的原因及解决办法_STM32编程:是时候深入理解栈了

308a08b954ee9de2d3d74da7d482fc43.png[导读] 从这篇文章开始,将会不定期更新关于嵌入式C语言编程相关的个人认为比较重要的知识点,或者踩过的坑。为什么要深入理解栈?做C语言开发如果栈设置不合理或者使用不对,栈就会溢出,溢出就会遇到无法预测乱飞现象。所以对栈的深入理解是非常重要的。版权声明:所有文章版权归嵌入式客栈所有,如商业使用,须嵌入式客栈授权。欢迎关注微信公众号,内容更丰富。啥是栈先来看一段动画:b01edc95ab3f4b1f773e4430d3.

2021-05-06 09:19:10 2911

原创 关于RS485的DMA发送,以及EN使能脚的自动切换

ST官方都有APPNOTE指导的(对于UART没有RS485功能的单片机型号而言):1、启动DMA前,先关闭UART发送完成中断,并清除发送完成中断标志;2、在DMA传输完成中断函数中,开启UART发送完成中断;3、在UART发送完成中断函数中,切换RS485为接收态;DMA中断时,只表示需要传送的所有数据字节全部传送到串口的发送数据寄存器中了。此时串口实际上还有2个字节并未发送完成,数据寄存器和移位寄存器中的2个字节还需要发送,并不能关闭串口发送。同理,如果是485切换方向,必须要等到.

2021-03-09 21:00:46 5232 1

原创 C# VS2017中Windows窗体更改图标

一、图片准备1、需要.ICO格式的文件。2、矢量图下载可在阿里巴巴的矢量图库中下载(https://www.iconfont.cn)。3、下载PNF文件的图片后需转成.ICO格式(https://www.uupoop.com)。4、尽量将转好后的.ICO文件放置.sln文件相同的目录之下。二、Windows窗体中左上角图标在窗体属性中的ICON添加图片即可。三、外部桌面显示图标...

2020-12-01 22:33:27 2684

原创 c# RadioButton控件使用小结

一、整体描述c#的VS2007中 RadioButton 用于多个选择下进行单选操作。Checked用于设置默认勾选,同一个容器只会出现一个。二、容器的使用用于将同一个项目中的多个单选框进行分组,否则无法同时选中两个不相关的控件。例如上图中:固件类型、芯片型号。三、代码实现软件中radioButton_Software1.Checked关键字在窗体的Design中(Name)中进行更改。 if (radioButton_Software1.Checke

2020-11-30 22:08:50 3461

原创 J-Scope V6.11m使用小结

一、使用平台芯片:STM32F407VET6编译软件:KEIL 5使用软件:J-Scope V6.11m二、使用方法1、目标板下载对应软件,并让软件生成对应的.axf文件。2、将j-link连接至目标板,打开J-Scope V6.11m软件,选择打开新的项目。3、按以下步骤建立项目,以及添加所需要监控的变量即可。三、附加1,更多使用方法及手册,点击软件右上角Help,About。...

2020-10-27 19:56:38 977

转载 PID调节经验

Kp: 比例系数 ----- 比例带(比例度)P:输入偏差信号变化的相对值与输出信号变化的相对值之比的百分数表示 (比例系数的倒数)T:采样时间Ti: 积分时间Td: 微分时间温度T: P=20~60%,Ti=180~600s,Td=3-180s压力P: P=30~70%,Ti=24~180s,液位L: P=20~80%,Ti=60~300s,流量L: P=40~100%,Ti=6~60s。(1)一般来说,在整定中,观察到曲线震荡很频繁,需把比例带增大以减少震荡;...

2020-10-21 22:30:21 1419

原创 STM32 堆栈大小的设置及分析

一、通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出环境:STM32F103C8T6,MDK5在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞。debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看局部变量地址已经超出栈的范围,于是确定是栈溢出。如果不稍微了解一下堆栈,在开发过程中可能碰到各种奇怪的错误。二、.map和startup.s文件MAP文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何.

2020-10-15 22:31:28 14075 1

原创 关于STM32F4上CCM内存知识扩展

该篇用于记录一些使用方法之外的知识点。关于具体使用方法请看 STM32F4上CCM内存的使用小结(https://blog.csdn.net/qq_27747359/article/details/109085292)一、CCM内存的优点与缺点The main system consists of 32-bit multilayer AHB bus matrix that interconnects:Eight masters: – Cortex® -M4 with FPU ...

2020-10-14 22:38:08 1724 1

原创 STM32F4上CCM内存的使用小结

一、CCM内存介绍相较于F2,F4新加的一个特殊内部SRAM。64 KB CCM (内核耦合存储器)数据 RAM 不属于总线矩阵(请参见图 1 : STM32F405xx/07xx和 STM32F415xx/17xx 器件的系统架构)。只能通过 CPU 对其进行访问(dma等外设不能访问)。二、用法(基于MDK)1、自动分配法(不建议使用)设置完后,若重新编译,map文件里就会有这块SRAM的资源分配——由于IRAM1优先使用,而且一般SRAM1够用,就不会给它分配资源。2...

2020-10-14 22:08:46 4734

原创 485通讯关于匹配电阻的选择

A: 我们公司的做法是:在485的任何一个节点上,对 A上拉;对B下拉,具体接线就是:(+5V---R1---A---R2---B---R3---GND),其中R1:3.3K,R2:180欧姆, R3:3.3K,取消原来的120欧电阻,这样在总线空闲的时候就保证A比B高出大约200mV的电压,也就是说能保证总线上的数据状态在空闲的时候是稳定的1。这可是我们公司几年的现场经验得来的,效果很好,保证比原来那种方式好多了.B: 确有可取之处,但是请问: 在485的任何一个节点上,对A上拉,对B下拉,...

2020-08-03 21:51:11 7946

原创 CAN通讯故障分析

一、现象CAN监控器上出现错误帧。二、分析过程1、检查匹配电阻。两端均为120R电阻,全部断电后万用表测量为60R。(60R为最佳匹配电阻)2、测试发现单独接发送端,将接收端断开,问题消失,锁定问题为接收端问题。3、经过核查得知,发送端为500K波特率,接收端为250K波特率,导致问题出现。三、总结1、匹配电阻需两端120R。2、总线上只要有一个节点波特率不一致,将导致总线数据传输异常。此次为监控端、发送端为500K,接收端为250K。四、知识扩充1...

2020-08-03 21:47:23 8850

原创 TPC817隔离光耦使用小结

一、参数详情FEATURES● Current transfer ratio(CTR: MIN.80% at I F =5mA, V CE =5V)● High isolation voltage between input and output(Viso=5000V rms)● Creepage distance>7.62mm● UL Recognized File # E478892● Compliant to RoHS directive 2011/65/EU and in accord

2020-07-31 22:23:00 7832 2

转载 STM32实时操作系统的FreeRTOS 和uCOS II的比较

freeRTOS比uCOS II优胜的地方:1。内核ROM和耗费RAM都比uCOS 小,特别是RAM。 这在单片机里面是稀缺资源,uCOS至少要5K以上, 而freeOS用2~3K也可以跑的很好。2。freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。3。freeRTOS 可以有优先度一样的任务,这些任务是按时间片来轮流处理,uCOSII 每个任务都只有一个独一无二的优先级。因此,理论上讲,freeRT

2020-07-30 08:39:50 2201

原创 STM32 ~ BootLoad 总结与分析

boot地址为:0x8000000 ~ 0x800c000主程序地址为:0x800c000之后主函数之前添加一下中断向量偏移,以及程序起始地址。注意:相关外设时钟,比如定时器时钟、UART时钟等。必须在中断向量偏移程序之前初始化,否则相关外设会开启失败。(RCC_Configuration();) RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); IWDG_Init(5,1562); /.

2020-06-03 21:22:00 1387

原创 在emwin中,调用GUI_Delay()函数,程序卡死,黑屏

没有OS_TimeMS+1可以在systick里或者定时器里定时+1

2020-06-03 20:59:23 2092 1

原创 解决zigbee CC2530/CC2630 用Flash Programmer下载hex文件,提示Chip is locked! Not able to read IEEE address

先用smartRF Flash programmer的Erase选项擦除芯片(先不要勾选Erase and program),擦除成功后就可以使用了。原因是厂家写入了lock bit

2020-05-09 09:25:00 3029 2

转载 C# winform中复制文本框内容的功能代码

在C#的winform开发的过程中,复制文本框中的内容是个常见的功能,假设窗体上有个文本框,name为textBox1,复制功能的具体代码如下:if (textBox1.Text != "") { Clipboard.SetDataObject(textBox2.Text.Trim()); MessageBox.Show("复制成功,你现在可以直接粘贴到任何...

2020-03-05 08:49:51 3621

原创 C#中的项目文件夹debug 和release的区别

一:各文件类型介绍Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。   obj是object的缩写,用于存放编译过程中生成的中间临时...

2019-11-28 19:25:11 1672

原创 窗口看门狗的作用是什么?窗口看门狗复位分析

一,窗口看门狗介绍  独立看门狗的喂狗范围 0-X(X由预分频器和重装载值决定,最大值为0xFFF)  独立看门狗相关介绍:传送门:独立看门狗  相比于独立看门狗,窗口看门狗限定了喂狗时间段(由喂狗上限和喂狗下限值限定的喂狗范围)  所以形象的称作窗口看门狗  二,为什么需要窗口看门狗  独立看门狗:在0-重载值之间任意时间都可以喂狗  如果程序跑飞后又跑回正常 ...

2019-11-28 13:25:33 5857 2

转载 64位win7系统的VS2010生成C#执行exe无法在32位机器运行的解决办法

安装相应的framework也是必要的,但最重要的是,即使你设置了生成x86程序,依然是无法再其他32位系统下运行的,需要在配置管理器设置目标平台为"Any CPU"具体如下步骤:……………………………………………………然而这并没有什么卵用,真正的原因是,我在用http://www.pic2icon.com/zh-cn/format_conversi...

2019-10-24 16:14:25 1945

原创 多种排序方法~插入排序法

一、多种排序的方法常见的排序方法有冒泡法、沉底法、选择排序法。今天看到了另一种插入排序法,做个记录,方便今后总结学习。二、分析序数组如下:把数组的首元素5作为有序区,此时有序区只有这一个元素:第一轮让元素8和有序区的元素依次比较。8>5,所以元素8和元素5无需交换。此时有序区的元素增加到两个:第二轮让元素6和有序区的元素依次比较。6&l...

2019-10-24 16:12:46 488 4

原创 Visual Studio c#生成exe可执行文件

生成exe可执行文件方式1.调试完毕,确认程序无误后:生成-生成解决方案2.程序所在文件夹-文件名nverter-Ver0102-2019-09-20 - debug\Inverter\bin\x64\Debug-同名可执行文件即为所求...

2019-09-18 19:46:32 7407 6

原创 Zigbee 修改物理地址IEEE address

参考C:\Texas Instruments\ZStack-CC2530-2.5.1a\Documents Z-Stack User's Guide - CC2530DB可知The Secondary IEEE address location is found on the last page of the CC2530 flash memory, at an offset of 0x...

2019-08-02 09:15:58 1388

转载 Zigbee OSAL NV 区操作

系统NV区: 初始化nv数据项osal_nv_item_init()读取nv数据项osal_nv_read()写入nv数据项osal_nv_write()在使用osal_nv_read()或osal_nv_write()之前必须调用osal_nv_item_init()。函数原型:uint8 osal_nv_item_init( uint16...

2019-08-02 09:15:49 575

原创 Zigbee 协调器如何禁止入网以及限时入网

一、需求在组网过程中,有时并不希望协调器此时开放网络,比如同一环境先组建多个信道相同的网络、组网前需要处理其他事件,或者按键触发开始组网一段时间,此时我们便需要打开、关闭或者定时关闭允许终端入网功能。二、方法NLME_PermitJoiningRequest()函数用于设置该协调器是否允许其他网络加入,个人理解是用于FFD设备,一般在APP初始化时候,参数设置为0,即禁止网络加入该节点...

2019-08-02 09:15:33 1226

转载 Zigbee IAR 编译 ZStack-CC2530生成 HEX 文件完全配置

1.正确配置输出文件格式:菜单选择 Project-Options-Linker-Output-Format,选择 Other。右边的 Output 下拉框 选 intel-extended,Format variant下拉框选 None,Module-local 下拉框选 Include all2.还是在菜单 Project-Options-Linker-Output 标签中,勾上 Over...

2019-08-02 09:14:43 919

原创 Zigbee协调器主动使终端节点退网

我使用ZDP_MgmtLeaveReq()这个函数来让已知短地址的终端退网,代码如下:我这样使用的结果是,可以将节点退网,节点上也需要做一些配置。我在函数里禁止节点重连,但是节点退网后会获取到新的短地址重新入网,这个属于正常现象么?我使用NLME_PermitJoiningRequest(0)禁止后,节点才会不入网。我现在的问题是有没有什么接口,可以不需要管节点配置,直接指定节点退网?我是担心其他...

2019-08-02 09:13:27 1589

原创 Zigbee 如何动态修改模块的发射功率

在实际应用中,经常要根据不同的使用环境和需求来提高或者降低 Zigbee 模块的发射功率。接下来介绍如何在协议栈中修改 CC2530 普通模块和带 CC2591 PA 芯片的 CC2530 模块的发射功率。1、带 CC2591 PA 芯片的模块功率表:2、CC2530 普通模块的功率表:设置功率的函数是:MAC_INTERNAL_API uint8 macRadioSetTxPower(...

2019-08-02 08:57:31 1115

原创 解决IAR不能设置断点

一、本人遇到的问题将所有的断点全部删除,再Debug,看还会不会有提示。 再者,注意把工程选项里Linker->Output|Format中的Debug information for C-SPY勾上。生成HEX文件时会将此选项取消,仿真时需要重新勾选。二、常见解决办法1.Rebuild All重新编译A.Project -> Clean:把前面编译后的文件删除;...

2019-08-02 08:57:03 4163

原创 Zigbee避开Wifi的信道,提升通讯质量

ZigBee 提供 16 个物理信道,必须在同一通道下的节点才可能互相通信。在同一工作区域内的相邻网络,建议使用不同的通道,以免相互干扰导致通信效率降低。比如,工作区域内存在大量的 2.4G Wi-Fi 热点,可能会降低 ZigBee 的通信效率,这时可选择 CH11、15、20、25、26,达到有效避开干扰的目的。具体分析参考前辈帖子:对于Zigbee和Wifi的信道重叠,百度有不少热心...

2019-07-18 09:46:05 1150

原创 Zigbee cc2530 如何捕获新节点加入网络的事件

当有新节点加入到网络时会发送device announce包,请问我在哪个方法里可以获得这个包,并解析它的地址信息?是应用层的uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) 方法的AF_INCOMING_MSG_CMD事件中吗?首先需要在你的应用层初始化的时候注册,对device announce的处理函数...

2019-07-09 21:10:57 1539 7

转载 Zigbee实现两个节点间的串口通信

“串口终端1”的数据,如何被“节点 1”所接收,并且发送出去的?串口数据是由哪层来负责的呢?--HAL。 。 。恩,猜对了。但这个肯定不是靠猜的,其中的过程就不讲了。 让我们从主循环 (osal_start_system) 的Hal_ProcessPoll函数找下去 (用source insight的同学可以用 ctrl +) ,Hal_ProcessPoll ==> HalU...

2019-07-09 20:31:19 4958

转载 zigbee设备间的绑定

UINT16 SerialApp_ProcessEvent( uint8 task_id, UINT16 events ) //当有事件传递到应用层的时候,执行此处{if ( events & SYS_EVENT_MSG ) // 有事件传递过来,故通过这个条件语句 {......case KEY_CHANGE: //键盘触发事件 S...

2019-07-09 20:27:43 1169

原创 IAR的View视图菜单中Watch、 Live Watch、 Quick Watch、 Auto、 Locals、 Statics这几个子菜单的含义和区别

一、简述IAR的View视图菜单  View这个菜单的意思就是打开(已关闭的)视图窗口,比如我们的工作空间窗口不见了,就可以通过该菜单打开。不瞒大家,以前我初学软件的时候,常用的视图窗口不小心被我关闭了,我心里都慌了。由于在调试模式下增加了一些视图窗口,所以在编辑模式和调试模式下存在一些差异。  细心的朋友其实会发现,子菜单是进行了分类的(用横线隔开),本文讲述的就是Wa...

2019-07-09 20:07:56 9429 1

转载 ZigBee协议栈---组网,入网以及操作系统程序解析

第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络//第一步:Z-Stack由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统int main( void ) {.......// Initialize the operating systemosal_...

2019-07-04 20:07:01 1973 1

原创 STM32 DMA传输出错的防错机制

一、DMA 中断对于每个 DMA 数据流,可在发生以下事件时产生中断:● 达到半传输(每次传输都会触发,属于正常触发)● 传输完成● 传输错误● FIFO 错误(上溢、下溢或 FIFO 级别错误)● 直接模式错误可以使用单独的中断使能位以实现灵活性,如 表 43 所示。上诉为F4系列,F1系列中断只有三个,所以只需处理三个即可。见下图:二、常规操作我们正...

2019-06-26 20:45:59 10941

原创 keil中保存芯片内部ROM里数据(memory windows中的数据)

我们在使用keil时经常会使用memory windows来观察内存中的数据,但是有时候,比如ADC采样后,我们感觉数据比较有用需要导出来做进一步分析或者远程升级文件出错,那该如何做呢?首先调出调试命令窗口。软件仿真状态下View---->commandwindowskeil的调试命令中提供了一个SAVE命令,可以帮助我们解决这个问题。就是这个窗口了。我们按以下格式输入...

2019-06-13 15:37:23 2806

原创 如何判断CAN总线空闲以及帧间隙,计算传输速率

一、如何判断总线忙还是空闲呢进入 正常模式之前,bxCAN 必须始终在 CAN 总线上实现 同步。为了进行同步,bxCAN 将等待 CAN 总线空闲(即,已监测到CANRX 上的 11 个隐性位)。判断总线状态可以监测总线电压,简单来说CAN_H和CAN_L之间的差分电压大的(一般在2V左右)就是显性状态,差分电压小的(理论上是0V)就是隐性,当然容错CAN要复杂很多,就不是这样的。当你一...

2019-06-05 10:27:20 6674 4

原创 波特率的解析及转换为字节传输速率

波特率115200 = 115200 (位/秒)以最普通的串口(起始位+8位数据+停止位)为例:除以 10,得到的是每秒字节数:波特率115200 = 115200 (位/秒) = 11520 (字节/秒)再除以 1024,就是每秒 KB 数:波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)如果有一位奇偶校验位,就应该除以 11,得到的是每秒字节...

2019-06-05 09:53:05 10550

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除