自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (17)
  • 问答 (1)
  • 收藏
  • 关注

原创 MPC的560x系列的运行模式的介绍

MPC560X的运行模式的介绍,通过阅读本文可快速对其运行模式进行了解。

2023-04-15 12:14:05 690

原创 车载芯片SPC560b40x的boot讲解

SPC/MPC的boot功能讲解

2022-10-17 11:31:28 1023

原创 C语言的枚举类型赋相同的值

C语言枚举类型可以赋值相同

2022-06-28 09:45:46 4205

原创 关于STM32使用串口+DMA接收不定长数据的疑问

UART+DMA接收不定长数据中配置的重要顺序

2022-06-27 13:49:16 845

原创 记录正点原子对STM32F407的时钟配置

正点原子STM32F407关于时钟的配置

2022-01-24 10:37:01 1976

原创 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 3158

原创 STM32F4的浮点数格式运算速率与Q14格式对比

之前工作用的到AS8510这款高精度电压、电流采样芯片,专门写了相关程序,程序是调试通过,可以在工程中直接应用的程序。但由于工作原因,只能贴出.c和.h。

2021-08-19 11:35:08 2124

原创 针对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 972

原创 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 2501 1

原创 freertos中的configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );

本文用于记录学习freertos过程中的configASSERT( ucCurrentPriority >= ucMaxSysCallPriority )故障。所有思路基本上都在下面的文章中表述清楚https://blog.csdn.net/sinat_23338865/article/details/52640028,在此我仅仅记录我个人的理解。freertos为了便于管理,划定了一些低优先级的中断受其管理,操作系统可以通过函数挂起中断或暂时关闭中断,从而可以把低优先级的中断和操作...

2021-05-17 10:57:18 3076 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 10335 5

原创 配套UPS的磷酸铁锂SOC的估算策略

配套UPS的磷酸铁锂SOC估算策略一、背景和现状在电力系统常备UPS中配备的锂电池的容量越来越多,而锂电目前主要是磷酸铁锂和三元锂两种,担任锂电池控制和保护功能的BMS也越来越受到大家的重视。SOC的计算是BMS的主要功能之一,对于SOC计算市场长主要的算法有安时积分+电压修正、神经网络、卡尔曼滤波法、深度学习法等等。在众多算法中安时积分的算法因对硬件的资源的要求低,开发相对简单而被广泛使用。安时积分+电压修正的思路主要是充放电时使用安时积分,而在静态或重新上电时使用端电压进行校正。三元锂的整个

2021-03-18 11:02:48 3681 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 1689

原创 自己写的查表函数

百无聊赖,自己写了一个查表的函数,用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 531

原创 针对C语言中的同一结构体内容的比较、仿真

最近在做故障保护试验,其中涉及到故障存储。逻辑是只要有新故障就存储一次,否则忽略。为了达到目的,我设计了两个结构体pre和current,开始认为代码应该如下,但是结构体内变量太多,如果逐个进行比较的话,可读性有太差,甚是苦恼。if((pre!=current)||(current!=0)){ EEP_WR(); pre = current;} 求助互联网,比较多的说法如下(转载https://blog.csdn.net/iteye_4537/article/...

2020-07-04 15:38:40 2372

原创 关于数组传递、二位数组传递的相关试验总结

最近程序中应用到了数组指针,而且应用到了数组指针的参数传递,搞的一头雾水。网上的大牛都是讲数组指针的概念和应用,基本没有设计数组指针额参数传递,无奈只能自己摸索了。 首先复习一维数组的相关知识,直接上程序,特别简单的一段,主要是为了验证指针变化和地址变化的逻辑和自己预想的是否相同...

2020-06-10 17:49:24 167

转载 转载:doxygen的文档生成,注释规范

旨在利用doxygen、graphviz-2.38、htmlhelpj生成一个keil代码的规范文件,注释规范见下面链接原文链接:https://blog.csdn.net/hanzonghua/article/details/77929342

2020-03-20 18:17:00 164

原创 UCOSIII的延时任务调度

初学UCOSIII,认为认为任务调度或者任务切换只有2中方式——任务级和中断级。中断级自然不必细说,中断结束后会进行任务调度,任务级根据资料显示使用的是OSTimeDlyHMSM()函数和OSTimeDly()函数,因为内部有OSSched()进行任务调度。 但在实际使用的过程中,发现delay_ms()的延时函数也会发生任务调度,究其原因是因为在UCOSIII中delay_ms...

2020-02-27 11:03:19 1104

原创 Keil平台下C语言书写格式规范整理

一、文档简介一份编写规范的代码会让人赏心悦目,养成良好的代码编写习惯是每一个程序员应该具备的基本素养! 当项目需要多人合作共同编写的时候,共同的风格、方式就变得尤为重要,代码配合的效率也会提高,因此编写本来规范代码编写的风格,请各位工程师参照。当然如果有不同的见解或需要增加的内容,请直接沟通。二、整体风格编排针对总的书写格式,包括对齐、缩进、空格、括号等等标准,需要...

2019-12-01 13:59:53 3649

原创 STM32F429 HAL库的CAN单节点发送

最近两个月一直很头秃,网上很多人吐槽HAL库,但是我一直没有舍弃,一直在努力的适应。问题如下: 电路板单板调试CAN发送数据,程序总是卡死在if ( ( Timeout == 0 ) || ( ( HAL_GetTick() - tickstart ) > Timeout ) ),有人说,有病,为何不用回环模式。当然可以!不过在设备正常运行的时候,如果有设备离线,总线上只剩...

2019-12-01 11:12:11 922

原创 keil5中应用Astyle

当软件工程师经常要和别人配合写代码,当大家的coding风格不一样的时候,代码移植会变得比较痛苦。偶然间在网上发现的了keil兼容Astyle的文章,于是搞了一搞,可读性比之前好多了,谢谢各位大侠。 keil5使用Astyle的流程如下: https://blog.csdn.net/u010160335/article/details/78587411按照这个帖子可...

2019-11-30 20:26:11 1085

原创 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 22186 14

原创 STM32F4的CAN过滤器使用心得

最近在调试11个节点的CAN网络,出于安全性考虑增加过滤器功能(原子标配代码没设置相关功能),上午花费1个小时时间查阅资料与实验,最终完成,总结如下:1、首先了解CAN协议的扩展帧格式,如下,定义的扩展标识符为29位,即下图的标识符IDE与标识符扩展IDE。 查阅HAL库发送数据,格式如下,即发送的字符格式是29位标识符IDE+IDE+RTR+0,一共32位。弄清楚发送...

2019-04-25 10:15:35 2370 1

原创 LTC6803的使用总结——温度采集、电压采集和均衡开关

       最近一直在调试凌特的LTC6803-3,主控芯片是STM32F103RCT6,调试过程中出现了一系列的问题,部分得到解决,部分还是有待商榷,如下1、看门狗配置寄存器正确写入       6803的初始化时,配置寄存器的看门狗位是只读位,高电平说明看门狗正常工作,低电平说明1-2.5s没有接受有效数据,并且系统复位。因此读取寄存器数据检验写入数据是否正确时,忽略第一组配置寄存器...

2018-08-03 10:33:56 7548 16

CAN协议PartA整理的思维导图,全部时按照CAN协议文件整理,为了复习方便

CAN协议PartA整理的思维导图,全部时按照CAN协议文件整理,为了复习方便

2023-02-15

CAN通讯转232,并上传到电脑串口助手

手头没有CAN盒,利用正点原子STM32F407开发板改造了一个CAN转发232的程序,并通过自带的USB线上传到串口助手。串口助手16进制显示,并开启时间戳功能,时间设置为50ms,可以精准捕捉每一帧数据。 232通讯速率设置为256000,且改为DMA传输。 问题:人为降低了CAN发送端的频率为100ms一次,否则232通讯跟不上。

2022-04-20

STM32F407 利用两路SPI完成自发自收试验

两路SPI串接,SPI1发送数据,SPI2接收数据。测试中发现SPI2的接收缓冲区为3个byte,想从数据手册中找到根据,不幸没有找到,但是只要发送数据≤3,就可以完美接收。程序亲测可用。

2022-01-29

ST通过定时器启动ADC,并通过DMA搬运

STM32F407通过定时器3启动ADC采集,采集结果通过DMA搬运,并通过串口1进行打印。调试平台基于正点原子探索者开发板,因此在串口1的输出上并未进行控制位操作。 程序中应用FREERTOS,一共创建了3个任务,分别是LED(引脚与DS0和DS1不匹配)、USART和ADC任务。定时器创建在初始化FREERTOS之前,并未使能定时器中断。

2021-07-27

IAP_TEST.rar

网络IAP升级,HTTP方式升级,测试成功。附件中包含程序源码(bootloader)、官方文档、测试记录

2021-05-27

freertos_test.rar

依托于正点原子的F4战舰开发板,利用CUBE搭建的FREERTOS+LWIP+LAN8720A的keil程序

2021-05-17

BQ79616+BQ79600的底层驱动程序

针对B样BQ79616芯片和BQ79600的菊花链通讯编写的底层驱动程序

2021-03-18

bq7961x_Draft_DS_Long_v1.3.pdf

TI的电压采集芯片BQ79616的数据手册

2021-03-18

bq79600-2020.pdf

TI的BQ79600的数据手册

2021-03-18

BQ79616.zip

电压采集芯片BQ79616的串口通讯程序,包括电源模式切换和电压采集

2021-03-18

STM32F107 CAN升级程序,包括boot、APP、说明文件等

使用图莫斯CAN盒做的CAN升级程序,工程中正常使用

2021-01-07

CUBEMX生成STM32F429的CAN1和CAN2程序,亲测收发可用

利用CUBEMX生成STM32F429的CAN1和CAN2程序,并加入发送函数、回调函数延时函数等等,亲测CAN1和CAN2的收发都可用

2020-09-15

jre10.0.2 64位安装版本.zip

配合最新版的CUBE使用的java,经过试验,好些版本的java使cube不能生成MDK工程,亲测本版本可用。使用cube版本V6.0.1

2020-08-26

STM32-SD2405.zip

针对SD2405的STM32F429的开发程序,亲测可用,使用hal库开发,留此备份用。 支持闰年计算,支持星期计算

2020-08-26

CUBE完整安安装包(包含F1和F4).zip

STMCUBE的完整安装版本,其中包含了STM32的F1和F4 STMCUBE的完整安装版本,其中包含了STM32的F1和F4

2020-08-26

STM32F429_CAN12.zip

STM32F4的CAN2接收调试很久,按照网络大神说的把CAN1时钟使能且过滤器设置成14并不能成功,后修改了一些其他配置才可以进入接收中断,亲测可进入中断,且数据正确

2020-08-19

AS8510.zip

程序是STM32F4与AS8510的通讯部分、控制部分等,由于时原公司的工程项目,此处只能贴出相关的c文件和h文件,自己留作备份并希望能帮助到相关的人

2020-06-29

基于HAL库的ADC+DMA程序——STM32F429

基于正点原子的程序,使用HAL库做了一个ADC+DMA的基础程序,亲测可用。开始绕了很多弯路,ADC和DMA总是配合不好,后来查到因为地址符号没有强制转换成32位的,提醒大家注意。

2018-09-07

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

TA关注的人

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