- 博客(148)
- 资源 (1)
- 收藏
- 关注
原创 freertos堆栈溢出管理
当一个任务第一次被创建时,它的栈被一个已知的值填充。将任务从运行状态换出时,RTOS 内核可以检查有效堆栈范围内的最后 16 个字节,以确保这些已知值没有被任务或中断活动覆盖。如果这 16 个字节中的任何一个不保持其初始值,则调用堆栈溢出挂钩函数。在 RTOS 内核将任务从运行状态换出后,堆栈可能会达到其最大(最深)值,因为此时堆栈将包含任务上下文。如果堆栈指针包含超出有效堆栈范围的值,则调用堆栈溢出挂钩函数。这个值被称为栈空间的。每个任务都独立维护自己的栈空间, 任务栈空间总量在任务创建时进行设定。
2024-01-04 15:47:33
779
1
原创 KEIL IAR 第三方脚本编译及下载指令
在Setting 文件夹下面有一个.cspy的bat文件,在后面加上参数 "--download_only",前提是在IAR下面都配置好了,并且成功下载过一次的工程。-log all :打印所有,可以设置 -log info。-r Blinky.uvproj :Keil 工程名。test.ewp :工程名,注意是.ewp结尾的。-o Build_Output.txt:输出文档。IarBuild.exe :前面需要补全路径。-build Debug :表示build。UV4.exe : 前面需要补全路径。
2023-08-28 15:12:45
837
原创 CAN 无法接收数据
1. CAN的发送是带反馈的,能发出去,必然是收到了ACK。说的对, 最终结果是can的过滤器设置的是接收一般帧,所以不能接收应该是过滤器没设置好。2.别的芯片有干扰数据。
2023-08-24 17:08:13
2477
原创 OTA每第二次复位报硬件异常
现象:在做ota功能时,使用iar,在没有烧录一级boot,直接对二次boot进行调试。每第二次复位总提示硬件异常优先级提升到最高。解决方案:烧录一级boot后就没有再出现过了。
2023-08-21 16:45:20
192
原创 GD32使用ST HAL库 CAN无法初始化问题
在while ((hcan->Instance->MSR & CAN_MSR_INAK) == 0U)前增加一句。这时因为st和gd实现的底层顺序不一样,gd不清这个就一直在睡眠导致无法初始化成功。情形:卡死在HAL_CAN_Init()然后死机。
2023-08-17 14:01:33
2045
原创 bootloader跳转APP注意事项 F4
如果bootloader程序使用操作系统,在设置栈指针时需要注意当前使用的指针时MSP还是PSP,有PSP切换到MSP可以通过触发SVC异常,就相当于进行一次上下文切换,只不过切换到的是APP程序而不是下一个任务。0000) == 0x20000000) /* 检查栈顶地址是否合法.可以放在内部SRAM共64KB(0x20000000) */0000) == 0x20000000) /* 检查栈顶地址是否合法.可以放在内部SRAM共64KB(0x20000000) */在gd32f427 时跳转异常。
2023-08-10 17:07:35
518
原创 IEC 103/104
主站向同一个子站传输新一轮的发送/确认(SEND/CONFIRM)或请求/响应(REQUEST/RESPOND)传输服务时,将FCB 位取相反值,主站为每一个子站保留一个帧计数位的拷贝,若超时没有从子站收到所期望的报文,或接收出现差错,则主站不改变帧计数位(FCB)的状态,重复传送原报文,重复次数为3 次。复位命令的帧计数位常为0,帧计数有效位FCV=0。发送/无回答服务、重传次数为0的报文、广播报文时不需考虑报文丢失和重复传输,无需改变帧计数位(FCB)的状态,因此这些帧的计数有效位常为0。
2023-07-18 11:38:05
4791
1
原创 keil显示内存和存储占用百分比进度条工具(Keil5_disp_size_bar)
原理是使用C语言遍历目录找到keil工程生成出的.map文件,然后找到对应的ram和flash的总大和占用大小,然后以进度条和百分比的直观格式输出来,以便嵌入式软件工程师方便调试,知道芯片占用情况,进行裁剪和优化。放到工程目录下,要放在在.map文件更上一层的目录,例如可以放在和工程文件同一目录下。3.接着每次按下编译就能看到生成的代码对ram和flash的占用大小百分比进度条。生成的代码对ram和flash的占用大小百分比进度条,keil5环境下通用。(50.76 KB, 下载次数: 130)
2023-07-12 09:38:48
2761
原创 simulink stateFlow流程图
基础修改分支优先级使用matlab workspace变量例题 输出数组=输入数组的平方 for循环使用脚本的数值实现数组索引
2023-07-10 15:46:58
1129
原创 simulink 常用子系统 核心是函数封装simulink function
目录Enabled SubsystemTriggered SubsystemFunction-call SubsystemSimulink Function
2023-07-07 15:26:39
549
原创 simulink for循环
每次都要复位值,因为这个任务会10s执行10s,所以需要在每次进入for循环都重置。步长0.1s 总共10s。
2023-07-07 11:08:48
4226
1
原创 simulink 仿真时间 求解器 数据类型 delay模块
改完数据类型后要run一次才能正常显示更改后的类型。搭建一个累加器,每次调用+1。仿真时间,模型运行的时长。delay模块,延时步长。
2023-07-06 18:46:16
535
原创 储能安全冷思考:究竟选择组装机还是专业品牌机?
在安全控制保护方面:能量块系统采用了全新的控制架构,将PCS和BMS融合成一个大脑BCS,直接接收电池箱内的电池采样数据,对电池系统运行工况进行评估,实现了功率控制和电池管理的完美融合,彻底消除了功率系统和电池系统控制保护的盲区,同时采用矩阵式交直流故障综合控保策略,可对电池侧和电网侧的故障提供快速、有效的最佳时序保护。针对电池内短路和热失控风险:在电池PACK内部,针对每一颗电池进行电压和温度监测,内置主动安全预警单元和独立控制的消防喷头。一旦发生电池热失控风险,系统。
2023-07-06 18:23:14
900
原创 simulink 常用模块
Relational Operator 数值比较模块 <= < > >= ==!min max 取最大最小值 可以通过该输入数量的方式来输入 数组 [1 2 3 4。Compare To Constant 直接和某数字比较,是上面的封装。switch 相当于c语言的if 中间是条件,满足走上,否则走下。goto/from 相当于c的goto lable 可以一对多。gain 增益,乘一定的倍数 相当于乘法。add sub pro div加减乘除。
2023-07-05 20:48:09
2581
原创 MBD开发 STM32 CAN
CAN通讯中断选择:USB low priority or CAN RX0 interrupts。一直报这个错误,不用管。
2023-07-05 19:50:41
464
LCD控制器TM1621/HT1621官方程序
2018-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人