STM32内存对齐,实战经验,超级有用 STM32编程中出现HardFault_Handler中断基本上都是因为内存超界或内存对齐引起的,超界的问题要仔细检查指针是不是在指定的范围内。这里主要讨论内对齐问题。
MFC线程同步一例 从用线程那天开始,一直受到线程同步的困扰,变量、数组和指针莫名其妙地被改了,宕机,各种锁加了不少,互相等着,与顺序执行效率差不多,有时会锁死,不知道各位高手是怎么处理的。我这边只能按具体情况分别处理,下面分享最近遇到的一个问题。D2D1_GEOMETRY_RELATION nLock = !!m_pLockGeometry ? m_pLockGeometry->CompareWithGeometry(*pCar->m_pGeoAGV, mtx2, 100.f) : D2...
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)不过奇怪的是,
单片机双向IO接口电路,3.3V转48V1A,可接继电器 单片机开发中经常用到电平转换,最简单的方法是外接ULN2801/4,无需电阻电容等,一块芯片全部搞定,不过有个缺点是输入输出分开设计。下面介绍一种双向电路,即能输出又能输入,一般双向电路只能传信号,这种电路可以接断电器和电机等功率器件。工作原理搜双向电平转换电路,这里加一个Q2 PNP三级管,目的是增加输出电流到1A,可以接继电器和小功率电机。...
STM32 HardFault_Handler故障一例 测试时不小点碰到STM32单片机电源,造成电源高频跳动,再启动后程序运行灯不亮,点击Stop按钮发现程序挂在 HardFault_Handler(void) 循环中。右键单击堆栈列表项,发现出错位置代码:return m_nVer == m_pData->nVer; 这一句是检测备份Flash数据的版本,我在系统中写了一段程序,用于断电时保存数据到Flash中,再加电时从Flash中恢复,由于电源高频跳动Flash出现了错误。打开Peripherals >Core Peripherals...
MFC 使用图形变换矩阵的简单方法 MFC用GDI绘画,没有图形变换矩,很不方便,查了很多都是自己写的,这里介绍一个简单方法,就是用D2D的矩阵变换。1、包含头文件 #include "d2d1helper.h"2、在左边的解决方案资源管理器的项目上点右键/属性/配制属性/链接器/输入/附加依赖项/填入D2d1.lib,如果有多项用分号分开。示例代码 D2D1::Matrix3x2F m_mtxCar = D2D1::Matrix3x2F::Rotation((FLOAT)D1120) // 旋转坐标 * D2D1::M
STM32 不能下载程序的解决办法 STM32 不能下载程序的解决办法有一次测试超频,死机,不能下载程序还有一次把下载口PA13占用了,不能下载程序解决办法:把BOOT0接3.3V,不从内部FLASH启动,可以下载新程序
VIM粘帖WINDOWS内容 学习ROS用到VIM,好像回到几十年前用DOS的感觉。在WIN10中装了一个子系统UBUNTU18.04,使用VIM编辑器,不会从WINDOWS中粘贴文本,上网查了很多,各种方法都不行,无意中点了一下右键,成功了,操作步骤如下图。打开VIM,按INSERT键切换到插入模式,左下角显示INSERT。从WINDOWS网页中复制一段文字,然后在VIM中点右键,剪贴板的内容谅会复制到光标处,可能是WIND...
S型加减速程序,C++,PLC,AGV 做无人驾驶AGV项目,起动和停车冲击非常大,参考牛人的博文https://blog.csdn.net/Septembernine/article/details/53125828,写了一段S型加减速程序,也称抛物线加减速,实际应用效果不错,分享给大家,代码中有比较详细的注释。图形MFC++// DLGDlg.cpp: 实现文件//#include "pch.h"#inc...
Thinkpad W530 笔记本关机后耗电问题 有一台使用多年的 Thinkpad W530 笔记本,出现几个问题,指纹不能用、双屏时两个屏的位置移不动,关机后耗电,一晚上减少15%,一直以为是软件的问题,重装等都试过了,不起作用。一天偶然发现指纹有点热,怀疑是短路了,从网上找了一个拆机视频,把指纹和触摸板的线拆了,重新开机,这几个故障都好了。真是奇迹,原本以为不相连的几个故障居然是一个问题,分析原因可能是因为指纹短路造成电压不稳出现以上问题。...
解决 Encountered an improper argument 错误 Keil 5.27版本,调试时会出现 Encountered an improper argument 错误,大部分操作都失效,不能退出,只能结束进程。百度说是文件路径中有汉字,删除汉字后问题依旧,偶然发现,删除全部断点后,故障消除。如上图,,分享给大家。...
STM32实战十 USART串口波形 开始用示波器查看USART串口波形(直接测量IO口),不容易搞清楚其意义,反复研究,了解一二,总结如下:由上图看出,无信号是高电平,发送三个字节,0x09 0x02 0x00,每个字节1帧,每帧由三部份组成:1、一个低电平起始位,不能设置,一定有。2、八位数据,也可以设成七位,高电平是1,低电平是0,二进制数据流是反的,最左边是低位3、停止位,0.5-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、打开软件,新建工程自定义工程名称选择型号选择运行库,用自带库时在这个界面...
STM32开发过程的常见问题 STM32开发过程中遇到的一些问题,记录如下。Q1:下载后程序不运行,反复排查代码没问题。A1:栈空间太小,打开startup_stm32f10x_hd.s,把 Stack_Size EQU 0x0200 后面这个数改成0x0800就好了(512 > 2000)。Q2:DAC+DMA生成正弦波,有时正常,有时不正常。A2:DAC_InitStructure结构中少初始化了一项...
STM32实战九 编码器 这一章编写编码器程序,通过定时器连接编码器,原理和细器节这里不多说,参考代码段中的网页,有两个注意事项,一是所有网上的参考代码都没有设置第二个通道,默认没有滤波,虽然能用,但是通道2抗干扰能力差,容易造成误计数。二是volatile u8 m_bInterrupt,说明在别处(计时器)会改变这个变量,不优化,因为优化后把很重要的代码删除了,详见setData函数说明。可用5个定时TIM1、TIM3...
STM32实战八 DAC/ADC 这一章编写DAC和ADC程序,即数模/模数转换。程序中封装了两个DAC,各1个独立通道,对应输出脚为PA4和PA5,提供两个方法,ADDA::daDMA(Timer & tim)成员方法以DMA方式按预定数据生成两个正弦波,通道1(PA4)是半幅波形,通道2(PA5)是全幅波形。ADDA::da()成员方法把指定内存的数据转换成模拟信号,未使用DMA,因为已经是一一对应。模数转换使用...