- 博客(32)
- 资源 (17)
- 问答 (1)
- 收藏
- 关注
原创 深入理解FCCU:故障收集与控制单元-5777M
FCCU是MCU安全机制的核心模块,通过复位分级、状态机管理、错误注入等特性,确保系统在故障时的可控性和可靠性。合理配置复位类型、NMI/EOUT输出及状态转换逻辑,是避免系统崩溃或误触发的关键。
2025-03-28 10:41:47
812
原创 汇编代码中嵌入回调函数的优化说明
在 PowerPC 的汇编代码中,我们需要实现调用 C 函数(例如回调函数),并传递参数。本文将详细介绍如何通过一系列步骤完成这一目标,包括代码示例和详细的注释。借助以上六个步骤的操作流程图解分析可知,在 PowerPC 架构下的汇编程序里成功嵌套了针对外部 C 类语言所提供的功能支持模块——即所谓“回调机制”。
2025-03-20 14:02:07
422
1
原创 STM32F4的IO端口翻转
工程调试过程中,使用到以下语句 for (i =0; i<4; i++) { cs_low(CS_PIN); spi_read_byte(0xff); cs_high(CS_PIN); } 芯片主频是168MHz,在使用示波器测试信号时,只能测试到CS引脚的第一个下降沿和最后一个上升沿,中间无电平变化。如果在cs_high(CS_PIN)语句后面加入1us的延时,当然可以解决问题。但究其原因是因为从cs_high(CS_PIN)输出高电平的时间太...
2021-09-09 15:11:02
3495
原创 STM32F4的浮点数格式运算速率与Q14格式对比
之前工作用的到AS8510这款高精度电压、电流采样芯片,专门写了相关程序,程序是调试通过,可以在工程中直接应用的程序。但由于工作原因,只能贴出.c和.h。
2021-08-19 11:35:08
2392
原创 针对freertos中任务堆栈的统计
平台使用STM32F407,搭载FREERTOS,调试时出现了堆栈溢出使系统进入hardfault中断,于是学着网络大神的做法检测了系统堆栈使用情况,在此记录一下过程。1、首先需要修改freertos的宏定义为1#define configUSE_TRACE_FACILITY 1#define configUSE_STATS_FORMATTING_FUNCTIONS 1#define configCHECK_FOR_STACK_OVERFLOW...
2021-08-04 17:20:42
1068
原创 LWIP 的socket接口下接收超时的处理
防止后期忘记学习时遇到的问题,在此记录一下。最近学习在freertos下使用LWIP协议栈,硬件平台是STM32F407+LAN8720(正点原子的F4探索者),软件使用CUBE配置,接口函数使用socket。函数中接收使用recv(),移植函数的编写方式如下return_num = recv(sock_conn, (unsigned int *)client_data_buffer, 100, 0); //将收到的数据放到接收Buff if(return_num &
2021-05-24 13:27:28
3246
1
原创 freertos中的configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );
本文用于记录学习freertos过程中的configASSERT( ucCurrentPriority >= ucMaxSysCallPriority )故障。所有思路基本上都在下面的文章中表述清楚https://blog.youkuaiyun.com/sinat_23338865/article/details/52640028,在此我仅仅记录我个人的理解。freertos为了便于管理,划定了一些低优先级的中断受其管理,操作系统可以通过函数挂起中断或暂时关闭中断,从而可以把低优先级的中断和操作...
2021-05-17 10:57:18
3871
2
原创 STM32F4的HAL库串口HAL_UART_Receive()轮询接收多个数据
ST的串口接收没有硬件FIFO,我一直使用的是接收非空中断(RXNE)中单字节读取的方式进行数据接收。用此方式进行数据接收会导致每一个字节都要进入中断处理,感觉上比较浪费资源,但好处是可以接收任意字长的数据(255以内)。本次项目开发ST作为串口通讯的主机,因为知道返回数据的格式,可以很好的处理通讯不定字长的情况,因此我想尝试换成查询接收的方式,函数使用正点原子的HAL库函数HAL_UART_Receive(&USART2_RS485Handler,tx_buf,len,1000);,测试成功。
2021-04-15 11:44:19
11233
6
原创 配套UPS的磷酸铁锂SOC的估算策略
配套UPS的磷酸铁锂SOC估算策略一、背景和现状在电力系统常备UPS中配备的锂电池的容量越来越多,而锂电目前主要是磷酸铁锂和三元锂两种,担任锂电池控制和保护功能的BMS也越来越受到大家的重视。SOC的计算是BMS的主要功能之一,对于SOC计算市场长主要的算法有安时积分+电压修正、神经网络、卡尔曼滤波法、深度学习法等等。在众多算法中安时积分的算法因对硬件的资源的要求低,开发相对简单而被广泛使用。安时积分+电压修正的思路主要是充放电时使用安时积分,而在静态或重新上电时使用端电压进行校正。三元锂的整个
2021-03-18 11:02:48
4227
3
原创 利用CUBEMX生成CAN1和CAN的收发程序(STM32F429)
首先在RCC中把晶振设置为外部晶振时钟图设置如下can1和can2设置波特率250k,开接收中断,并配置IO设置NVIC配置路径,生成代码打开MDK工程后,需要进行以下设置才可完成收发通讯1、增加过滤器设置2、开启启动函数3、开启接收4、编写回调函数 //CAN1设置,注意FilterBank 为0-13 CAN1_FilerConf.FilterFIFOAssignment = CAN_FILTER_FIFO0; /.
2020-09-15 10:56:16
1848
原创 自己写的查表函数
百无聊赖,自己写了一个查表的函数,用VC++6.0验证了一下,运行正确。写的不优美、编写习惯也不好,单纯的为了记录一下。#include <stdio.h>int main(){ int SOC_Index[9]={0,10,25,35,50,60,75,90,100}; int index=4,i,max=8,min=0; int SOC = 5; { scanf("%d", &SOC); for(i=0;i<3;i++) { if(SOC&l
2020-07-04 15:42:15
562
原创 针对C语言中的同一结构体内容的比较、仿真
最近在做故障保护试验,其中涉及到故障存储。逻辑是只要有新故障就存储一次,否则忽略。为了达到目的,我设计了两个结构体pre和current,开始认为代码应该如下,但是结构体内变量太多,如果逐个进行比较的话,可读性有太差,甚是苦恼。if((pre!=current)||(current!=0)){ EEP_WR(); pre = current;} 求助互联网,比较多的说法如下(转载https://blog.youkuaiyun.com/iteye_4537/article/...
2020-07-04 15:38:40
2621
原创 关于数组传递、二位数组传递的相关试验总结
最近程序中应用到了数组指针,而且应用到了数组指针的参数传递,搞的一头雾水。网上的大牛都是讲数组指针的概念和应用,基本没有设计数组指针额参数传递,无奈只能自己摸索了。 首先复习一维数组的相关知识,直接上程序,特别简单的一段,主要是为了验证指针变化和地址变化的逻辑和自己预想的是否相同...
2020-06-10 17:49:24
182
转载 转载:doxygen的文档生成,注释规范
旨在利用doxygen、graphviz-2.38、htmlhelpj生成一个keil代码的规范文件,注释规范见下面链接原文链接:https://blog.youkuaiyun.com/hanzonghua/article/details/77929342
2020-03-20 18:17:00
185
原创 UCOSIII的延时任务调度
初学UCOSIII,认为认为任务调度或者任务切换只有2中方式——任务级和中断级。中断级自然不必细说,中断结束后会进行任务调度,任务级根据资料显示使用的是OSTimeDlyHMSM()函数和OSTimeDly()函数,因为内部有OSSched()进行任务调度。 但在实际使用的过程中,发现delay_ms()的延时函数也会发生任务调度,究其原因是因为在UCOSIII中delay_ms...
2020-02-27 11:03:19
1149
原创 Keil平台下C语言书写格式规范整理
一、文档简介一份编写规范的代码会让人赏心悦目,养成良好的代码编写习惯是每一个程序员应该具备的基本素养! 当项目需要多人合作共同编写的时候,共同的风格、方式就变得尤为重要,代码配合的效率也会提高,因此编写本来规范代码编写的风格,请各位工程师参照。当然如果有不同的见解或需要增加的内容,请直接沟通。二、整体风格编排针对总的书写格式,包括对齐、缩进、空格、括号等等标准,需要...
2019-12-01 13:59:53
4591
原创 STM32F429 HAL库的CAN单节点发送
最近两个月一直很头秃,网上很多人吐槽HAL库,但是我一直没有舍弃,一直在努力的适应。问题如下: 电路板单板调试CAN发送数据,程序总是卡死在if ( ( Timeout == 0 ) || ( ( HAL_GetTick() - tickstart ) > Timeout ) ),有人说,有病,为何不用回环模式。当然可以!不过在设备正常运行的时候,如果有设备离线,总线上只剩...
2019-12-01 11:12:11
1136
原创 keil5中应用Astyle
当软件工程师经常要和别人配合写代码,当大家的coding风格不一样的时候,代码移植会变得比较痛苦。偶然间在网上发现的了keil兼容Astyle的文章,于是搞了一搞,可读性比之前好多了,谢谢各位大侠。 keil5使用Astyle的流程如下: https://blog.youkuaiyun.com/u010160335/article/details/78587411按照这个帖子可...
2019-11-30 20:26:11
1173
原创 STM32F103硬件IIC在HAL库下入坑指南
最近在BMS,电压采样芯片用的是TI的bq76940,监测9-15路电压,可进行充、放电控制,数据通信采用IIC模式,我MCU采用的是STM32F103RCT6。 ST采用HAL库,因为之前搞过HAL库的429,比较熟悉,网上又有里程,就直接copy使用了。关于ST的硬件IIC网上绝大部分的文章再说bug太大,都不建议使用,但是同时也有人分享一些使用成功的解决方案...
2019-08-16 10:47:04
23923
14
原创 STM32F4的CAN过滤器使用心得
最近在调试11个节点的CAN网络,出于安全性考虑增加过滤器功能(原子标配代码没设置相关功能),上午花费1个小时时间查阅资料与实验,最终完成,总结如下:1、首先了解CAN协议的扩展帧格式,如下,定义的扩展标识符为29位,即下图的标识符IDE与标识符扩展IDE。 查阅HAL库发送数据,格式如下,即发送的字符格式是29位标识符IDE+IDE+RTR+0,一共32位。弄清楚发送...
2019-04-25 10:15:35
2493
1
原创 LTC6803的使用总结——温度采集、电压采集和均衡开关
最近一直在调试凌特的LTC6803-3,主控芯片是STM32F103RCT6,调试过程中出现了一系列的问题,部分得到解决,部分还是有待商榷,如下1、看门狗配置寄存器正确写入 6803的初始化时,配置寄存器的看门狗位是只读位,高电平说明看门狗正常工作,低电平说明1-2.5s没有接受有效数据,并且系统复位。因此读取寄存器数据检验写入数据是否正确时,忽略第一组配置寄存器...
2018-08-03 10:33:56
8323
16
CAN通讯转232,并上传到电脑串口助手
2022-04-20
STM32F407 利用两路SPI完成自发自收试验
2022-01-29
ST通过定时器启动ADC,并通过DMA搬运
2021-07-27
CUBEMX生成STM32F429的CAN1和CAN2程序,亲测收发可用
2020-09-15
jre10.0.2 64位安装版本.zip
2020-08-26
STM32F429_CAN12.zip
2020-08-19
基于HAL库的ADC+DMA程序——STM32F429
2018-09-07
FREE_RTOS中的traceTASK_DELAY()是什么意思
2021-05-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人