- 博客(60)
- 资源 (8)
- 收藏
- 关注
原创 STM32内存对齐,实战经验,超级有用
STM32编程中出现HardFault_Handler中断基本上都是因为内存超界或内存对齐引起的,超界的问题要仔细检查指针是不是在指定的范围内。这里主要讨论内对齐问题。
2024-11-24 10:24:20
350
原创 从AC6重返AC5
前几天重装电脑系统,顺便把所有软件都更新了,MDK5.37版不支持AC5,自然就想把代码更新到AC6,没想到遇到各种坑,折腾了几天,最终没有爬过去,只好退回到AC5
2022-06-07 22:17:20
995
1
原创 MFC线程同步一例
从用线程那天开始,一直受到线程同步的困扰,变量、数组和指针莫名其妙地被改了,宕机,各种锁加了不少,互相等着,与顺序执行效率差不多,有时会锁死,不知道各位高手是怎么处理的。我这边只能按具体情况分别处理,下面分享最近遇到的一个问题。D2D1_GEOMETRY_RELATION nLock = !!m_pLockGeometry ? m_pLockGeometry->CompareWithGeometry(*pCar->m_pGeoAGV, mtx2, 100.f) : D2...
2021-09-01 16:38:16
180
原创 Visual Studio 2019 fatal error C1001: 内部编译器错误
VS2019 编译Release时出现如下错误:1>f:\ghcy\waitpoint.cpp : fatal error C1001: 内部编译器错误。1>(编译器文件“D:\agent\_work\20\s\src\vctools\Compiler\Utc\src\p2\main.c”,第 195 行)1> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。解决办法:修改项目属性/配置属性/链接器/优化/链接时间代码生成/使用链接时间代码生成 (/LTCG)不过奇怪的是,
2020-10-19 21:04:11
10969
原创 单片机双向IO接口电路,3.3V转48V1A,可接继电器
单片机开发中经常用到电平转换,最简单的方法是外接ULN2801/4,无需电阻电容等,一块芯片全部搞定,不过有个缺点是输入输出分开设计。下面介绍一种双向电路,即能输出又能输入,一般双向电路只能传信号,这种电路可以接断电器和电机等功率器件。工作原理搜双向电平转换电路,这里加一个Q2 PNP三级管,目的是增加输出电流到1A,可以接继电器和小功率电机。...
2020-10-18 11:24:31
1874
2
原创 STM32 HardFault_Handler故障一例
测试时不小点碰到STM32单片机电源,造成电源高频跳动,再启动后程序运行灯不亮,点击Stop按钮发现程序挂在 HardFault_Handler(void) 循环中。右键单击堆栈列表项,发现出错位置代码:return m_nVer == m_pData->nVer; 这一句是检测备份Flash数据的版本,我在系统中写了一段程序,用于断电时保存数据到Flash中,再加电时从Flash中恢复,由于电源高频跳动Flash出现了错误。打开Peripherals >Core Peripherals...
2020-06-15 20:06:58
687
原创 MFC 使用图形变换矩阵的简单方法
MFC用GDI绘画,没有图形变换矩,很不方便,查了很多都是自己写的,这里介绍一个简单方法,就是用D2D的矩阵变换。1、包含头文件 #include "d2d1helper.h"2、在左边的解决方案资源管理器的项目上点右键/属性/配制属性/链接器/输入/附加依赖项/填入D2d1.lib,如果有多项用分号分开。示例代码 D2D1::Matrix3x2F m_mtxCar = D2D1::Matrix3x2F::Rotation((FLOAT)D1120) // 旋转坐标 * D2D1::M
2020-06-13 23:13:39
1118
原创 STM32 不能下载程序的解决办法
STM32 不能下载程序的解决办法有一次测试超频,死机,不能下载程序还有一次把下载口PA13占用了,不能下载程序解决办法:把BOOT0接3.3V,不从内部FLASH启动,可以下载新程序
2020-05-17 10:37:40
5132
原创 VIM粘帖WINDOWS内容
学习ROS用到VIM,好像回到几十年前用DOS的感觉。在WIN10中装了一个子系统UBUNTU18.04,使用VIM编辑器,不会从WINDOWS中粘贴文本,上网查了很多,各种方法都不行,无意中点了一下右键,成功了,操作步骤如下图。打开VIM,按INSERT键切换到插入模式,左下角显示INSERT。从WINDOWS网页中复制一段文字,然后在VIM中点右键,剪贴板的内容谅会复制到光标处,可能是WIND...
2020-04-16 17:26:55
1108
1
原创 S型加减速程序,C++,PLC,AGV
做无人驾驶AGV项目,起动和停车冲击非常大,参考牛人的博文https://blog.youkuaiyun.com/Septembernine/article/details/53125828,写了一段S型加减速程序,也称抛物线加减速,实际应用效果不错,分享给大家,代码中有比较详细的注释。图形MFC++// DLGDlg.cpp: 实现文件//#include "pch.h"#inc...
2020-04-11 14:04:07
3609
4
原创 Thinkpad W530 笔记本关机后耗电问题
有一台使用多年的 Thinkpad W530 笔记本,出现几个问题,指纹不能用、双屏时两个屏的位置移不动,关机后耗电,一晚上减少15%,一直以为是软件的问题,重装等都试过了,不起作用。一天偶然发现指纹有点热,怀疑是短路了,从网上找了一个拆机视频,把指纹和触摸板的线拆了,重新开机,这几个故障都好了。真是奇迹,原本以为不相连的几个故障居然是一个问题,分析原因可能是因为指纹短路造成电压不稳出现以上问题。...
2020-03-11 15:21:11
1168
原创 解决 Encountered an improper argument 错误
Keil 5.27版本,调试时会出现 Encountered an improper argument 错误,大部分操作都失效,不能退出,只能结束进程。百度说是文件路径中有汉字,删除汉字后问题依旧,偶然发现,删除全部断点后,故障消除。如上图,,分享给大家。...
2020-03-09 19:30:02
13505
5
原创 STM32实战十 USART串口波形
开始用示波器查看USART串口波形(直接测量IO口),不容易搞清楚其意义,反复研究,了解一二,总结如下:由上图看出,无信号是高电平,发送三个字节,0x09 0x02 0x00,每个字节1帧,每帧由三部份组成:1、一个低电平起始位,不能设置,一定有。2、八位数据,也可以设成七位,高电平是1,低电平是0,二进制数据流是反的,最左边是低位3、停止位,0.5-2位,高电平,软件设置,...
2019-10-14 16:51:31
2956
2
原创 Keil(MDK)4升级到Keil(MDK)5
把Keil(MDK)4升级到Keil(MDK)5,走了一些弯路,终于成功了,记录如下,也适用于新建工程。1、下载、安装、注册Keil(MDK)5,具体方法百度上很多。2、下载与硬件对应的软件包http://www.keil.com/dd2/Pack/到任意文件夹,双击安装。3、打开软件,新建工程自定义工程名称选择型号选择运行库,用自带库时在这个界面...
2019-07-12 12:03:04
10504
1
原创 STM32开发过程的常见问题
STM32开发过程中遇到的一些问题,记录如下。Q1:下载后程序不运行,反复排查代码没问题。A1:栈空间太小,打开startup_stm32f10x_hd.s,把 Stack_Size EQU 0x0200 后面这个数改成0x0800就好了(512 > 2000)。Q2:DAC+DMA生成正弦波,有时正常,有时不正常。A2:DAC_InitStructure结构中少初始化了一项...
2019-07-06 20:20:47
1589
原创 STM32实战九 编码器
这一章编写编码器程序,通过定时器连接编码器,原理和细器节这里不多说,参考代码段中的网页,有两个注意事项,一是所有网上的参考代码都没有设置第二个通道,默认没有滤波,虽然能用,但是通道2抗干扰能力差,容易造成误计数。二是volatile u8 m_bInterrupt,说明在别处(计时器)会改变这个变量,不优化,因为优化后把很重要的代码删除了,详见setData函数说明。可用5个定时TIM1、TIM3...
2019-07-05 21:43:12
2550
原创 STM32实战八 DAC/ADC
这一章编写DAC和ADC程序,即数模/模数转换。程序中封装了两个DAC,各1个独立通道,对应输出脚为PA4和PA5,提供两个方法,ADDA::daDMA(Timer & tim)成员方法以DMA方式按预定数据生成两个正弦波,通道1(PA4)是半幅波形,通道2(PA5)是全幅波形。ADDA::da()成员方法把指定内存的数据转换成模拟信号,未使用DMA,因为已经是一一对应。模数转换使用...
2019-07-01 20:48:49
4449
原创 STM32实战七 数字滤波
数字滤波是数据处理是常用、灵活、有效的方法。前面的按键程序已经用到了滤波,属于开关量滤波,这里要讨论的是模拟量滤波程序,包括最常用的两种方法,中值滤波和平均值滤波。中值滤波的原理是,每次取最近几个数的中间值作为输出数据,每个波形的最高和最低几个数被滤掉,优点是基本保留原有数据,能有效抑制大幅值低频尖峰干扰,俗称椒盐噪声。平均值滤波,就是对最近一些数求平均,是最常用最简单的方法,对高频低幅值...
2019-06-30 15:34:58
15771
原创 STM32实战六 PWM加移相正交
这一章编写PWM程序,使用TIM3以两个通道,完全映射到PC6和PC7,除普通PWM输出外,增加移相正交PWM功能,为后面的编码器计数模式提供信号源。PWM.h#ifndef __PWM__#define __PWM__extern "C" { // 兼容C,按C语言编译,Keil5中的包含文件已经加入了C++兼容,不用再加这一段#pragma diag_remark 36...
2019-06-22 22:42:21
4581
原创 STM32实战五 板载LED显示数据
写到第五章,终于有可以看见的结果了。不过磨刀不误砍柴功。正因为前面的基础,才有今天的成果,而且有一定的实用价值。封装一个BoardLED类,主要功能是利用板载LED显示数据,类似于 Morse code 电报码,以点亮时间的长短表示二进制数据的0和1,最多4位二进制,十进制15,可以扩展到更多。下面的程序显示主循环周期时间,单位1us,实际上可以用来显示设置运行状态。购买或开发不同的开发板,LED...
2019-06-16 17:19:11
1324
原创 STM32实战四 定时器和按键
这一章编写定时器,包括定时器基类 Timer 和派生的通用定时器 GeneralTimer。基类对定时器参数进行封装,通用定时器封装一些定时应用,对应PLC的一些功能,包括:1ms定时中断 100个32位数字时间继电器,最小1ms,最大0xffffffff,大约50天。 一个高精度回调函数,微秒级误差,最小定时间隔1ms。 按键抖动和干扰过滤,并产生按键上升沿和下降沿。代码中有详细的说...
2019-06-13 22:33:00
5464
3
原创 Win10 清理备用内存
Win10启动后,把剩余的内存几乎都变成了备用内存,所谓备用内存就是Windows临时占用作缓存,如果别的应用程序申请内存,Windows让出来。如下图:但是有些应用程序,如SolidWorks,它一个资源监视器,可用的内存小于一定的值就提示内存极低,造成卡顿,甚至死机。网上有很多人提问,但是没有解决办法。为此我编写了一个MFC小程序,清理备用内存,原理很简单,先申请内存,再释放,...
2019-06-13 20:24:00
14436
3
原创 STM32实战三 C++ IO.cpp
这一章开始编写代码,主要是两个方面,一是C++,二是进行简单的IO封装。其它教程一般是用C语言,从按键或LED灯开始,比较直观,容易上手,但与实际应用有一定的区别,这里要做的是实用控制程序,开始就比较正规,C++是发展趋势,所以就从这里开始。说是C++,实际是C和C++的混合程序,系统提供的都是C,新写的代码是C++,先从简单的IO开始,添加两个文件IO.cpp和IO.h代码如下:IO.h...
2019-06-11 07:32:40
1104
原创 STM32实战二 新建工程
这一章新建一个工程,主要目的是练习新建C++工程,生成比较干净的代码,后来发现没在太大的意义,直接在原示例中删除文件,然后新建cpp文件即可,也可以把原有main.c的属性变成c++,方法是main.c/右键/Options for file 'main.c' /Properties标签/File Type:/改为C++ Source file,这样更方便。不过下面还是记录一下新建工程的过程,对熟...
2019-06-01 14:54:39
646
原创 STM32实战一 初识单片机
一直用PLC搞智能控制,最近研发新产品,因为控制点太多,想改用单片机,一阵某度之后,选用STM32,功能足够。开始想自己设计电路,很久没有Altium了,水平本来也不高,放弃了。从宝宝上买了一块开发板STM32F103VET6(单片机主体),一个ST-LINK仿真器(下载和调试程序),一些杜邦线(各种公母头),一些发光管(实际没有用上),开始奇妙的单片机旅程。与客服联系,要了好多资料,客服...
2019-05-28 23:21:27
1114
原创 WIN10文件备份
想用Win10自带的文件备份功能,一次非常不好的体验。开始/设置/更新和安全/备份/更多选项,把默认文件夹全部删除添加C:\Users\hcl-w530\Desktop\Works加不上,没有错误提示如果先加C:\Users\hcl-w530\Desktop再加C:\Users\hcl-w530\Desktop\Works可以加上去,但是备份了很多我不想要的文件咨询客服https...
2018-11-26 21:14:02
708
原创 MFC线程同步那些事
讲述线程运行及退出时遇到的一些问题和解决办法以及注意事项。一个工业控制项目,用USB口采集数据,程序结构是主进程负责界面和算法,创建一个子线程负责USB通讯,读取数据,死循环。
2016-12-06 18:17:48
579
原创 636型耳塞机
万里青年牌636型耳塞机,阻抗800前天收拾东西发现这个,线还很软,插到电脑上,还能响,勾起不少回忆,那时一个三极管1块多钱,攒一年才能揍齐一个单管机的元件,找一块电工板用锥子扎眼,自己布线,用香皂盒做壳,反复折腾好几天,居然响了,高兴的跳起来。上网一搜,怀旧的人还不少,贴出来,留个纪念。怀念那个年代,很苦,也很有乐趣。
2016-09-20 22:00:05
967
原创 日版IPhone5完美上3G
日版IPhone5,装上联通卡后不能用,总是搜信号,于是找朋友、上网、联系客服等,进行无数次试验,最终完美正常使用,包括3G,好东西大家分享。
2014-08-27 15:26:00
8686
原创 已知直线上的两点 A(x1, y1), B(x2, y2) 和另外一点 C(x0, y0),求C点到直线的距离。
数学知识太差,一点点积累,高手勿喷。1. 先求出AB向量a = ( x2-x1, y2-y1 )2. 求AB向量的单位方向向量b = √((x2-x1)^2 + (y2-y1)^2))a1 = ( (x2-x1)/b, (y2-y1)/b )3.求出CA的法向向量(或CB的法向向量)c = ( y0-y1, -(x0-x1) )4. 距离 = AC法向向量与BC向量
2014-05-05 11:14:25
7374
原创 MFC 自定义非窗口类控件中实现 ON_COMMAND 和 ON_UPDATE_COMMAND_UI
MFC 定制界面会用到自定义非窗口类控件,因为每一个小按钮都从窗口继承时浪费资源,效率低。本文描述如何在自定义非窗口类控件中实现 ON_COMMAND 和 ON_UPDATE_COMMAND_UI。
2014-04-21 14:57:26
5065
原创 CArray::SetSize 的用法
CArray 使用不当会产生内存碎片,应先调用SetSize(),MSDN和网友都这么说,但具体怎么用还不是太清楚,先看代码: // 1. 声明arr1后直接加CArray<int> arr1;arr1.Add( 1 );TRACE( "1, 0x%x, ", &arr1[0] );arr1.Add( 2 );TRACE( "0x%x, %2i\r\n", ...
2014-03-18 18:42:22
11184
原创 MFC 全屏与窗口切换,类似浏览器的F11功能
应用程序中经常用到全屏与窗口切换,就像浏览器中的F11功能,用ModifyStyle加ShowWindow,方法简单,规范,效率高(比MoveWindow),容易还原。WriteInt,把结果保存到注册表中,下次打开时用GetInt直接用,注意必须用CWinAppEx类
2014-01-14 14:39:17
1852
原创 CListCtrl中加入排序小图标,CHeaderCtrl::GetItem可能被误用。
因为项目需求,要在CListCtrl中加上排序小图标,Google到博文http://blog.youkuaiyun.com/liujiannanit125/article/details/6249039,感谢博主的奉献。不过实际使用中出现一个问题,加上这段代码后,经常出现写入内存错误,时有时无,很不好找原因。怀疑是pHdrCtrl->SetItem( i, &hdi );语句写入时出错,注释后故障以旧,
2012-07-09 17:03:08
4592
原创 VC2010 操作 MSWORD
每隔一二年就要用一次 WORD 或其它 MSOffice 组件,好多次了,每次都忘的一干二净,从头google,这次又要用,顺便记下来,以备不时之需,同时分享给大家。开发环境 WIN7-X64, VC2010, MSOffice2010。1. 在VC2010项目名称上右击,选择类向导...2.在右上角的添加类中选择“类库中的MFC类”3. 在新对话框中选择文件,点击右边的“
2012-06-11 15:56:02
12568
5
原创 Cookie path 参数
一直没注意Cookie path 参数的意义,最近写网页简繁体转换的功能,用Cookie保存当前的状态,var JF_cn = "ftcn" + self.location.hostname.toString().replace(/\./g, "");$.cookie(JF_cn, toFT);功能是实现了,但是不同的页面独立转换,不能统一,查了半天没找到问题,最后用Chrome查
2012-04-21 09:36:50
3014
STM32实战系列源码,按键/定时器/PWM/ADC/DAC/DMA/滤波
2019-07-06
ClearMemory.zip
2019-06-13
批量转换SolidWorks工程文件到pdf
2014-12-05
MFC自定义界面HUI,高效简单,含详细注释和示例
2014-08-03
MFC自定义界面包括按钮标签等,用于工控,展示等
2014-02-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人