![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
MC_J
一切从Hello,World开始
展开
-
STM32 EventRecorder printf不打印输出在调试窗口的问题解决
发现经过上述的操作后,进入调试界面,并没有把输出信息打印到窗口上,网上查找虽然也发现有人和我遇到一样的问题,但是都没有得到解决。找到EventRecorder对应重写的fputc函数,发现上面的宏定义导致部分程序是置灰的,也就是没有编译,才找到原因,是需要增加宏定义来打开对应的功能。也可以自己移植源码到工程里面,添加好后,工程中会多出几个文件,如下图所示,我这是自己移植的源码到工程中的,没有使用keil添加。把这个宏定义增加到RTE_Components.h中即可,就解决了没有输出的问题。原创 2022-09-23 14:43:23 · 1131 阅读 · 0 评论 -
STM32H7 SPI+DMA只发送一次,然后一直报busy的问题
首先我尝试的同时配置发送DMA和接收DMA,还是一直报busy,并不能解决问题;我又尝试调用前使用HAL_SPI_Abort函数,发现确实不报busy的问题了,但是如果连续执行DMA发送函数就会出现DMA发送不完数据的问题。网上看了很多讲SPI+DMA问题的帖子,有说必须发送DMA和接收DMA必须同时配置的,有的说DMA发送前需要手动调用HAL_SPI_Abort函数的。最后发现,并不需要同时配置发送和接收DMA,只需要同时打开DMA中断和SPI全局中断就可以了,如下图所示。原创 2022-09-08 13:57:37 · 4525 阅读 · 0 评论 -
关于STM32H7的16位ADC准确度测试以及使用中的问题
STM32H7 ADC使用问题原创 2022-06-08 16:40:49 · 7988 阅读 · 4 评论 -
STM32H7 ADC偏移校准以及线性度校准
一、问题之前编写ADC初始化都只是增加了偏移校准,无论是官方例程还是正点原子的例程都是只使用了偏移校准,但是在使用STM32H7芯片的时候发现个别的板子会出现线性度极差的情况。二、解决1.在初始化程序中增加线性度校准的功能,这是HAL库有提供的,就一行程序非常简单。HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_CALIB_OFFSET_LINEARITY, ADC_SINGLE_ENDED);2.发现这个校准函数返回超时的错误,经查找发原创 2022-05-05 11:36:10 · 4447 阅读 · 2 评论 -
STM32H7A3 ADC+DMA使用问题
解决STM32H7A3使用过程中遇到的一些奇怪的问题,并提供参考原创 2021-12-24 16:36:02 · 2182 阅读 · 1 评论 -
STM32H7系列FLASH出现HardFault的问题
一、问题描述在使用STM32内部FLASH时,发现有一次在读FLASH内容时直接就进入了HardFault,因为读内部FLASH是直接操作的内存,很简单的一句话,怎么也想不通是什么原因导致的。 然后调试模式下,用Keil直接看存储器的值,发现不是全A就是?号,这就确定应该是FLASH出了问题,然后擦除出问题的扇区就发现读取不会在进HardFault的。 通过读STM32H7的手册发现,H7系列和其他系列的FLASH不同,增加了ECC校验的功能,同时有状...原创 2021-10-11 15:45:24 · 3014 阅读 · 3 评论 -
STM32H7 PVD断电的使用
1.遇到的问题我使用的是STM32H747,在初始化后发现断电后并没有进入中断。最后查找到因为STM32H747是双核CPU,在HAL库源码中,有双核的宏定义将一些配置给屏蔽了,因为我只用到了单核,就把源码中的宏取消掉了,然后就可以正常进入中断了。使用不是双核的就不需要更改了。2.下面是PVD的程序void PVD_Init(void){ PWR_PVDTypeDef sConfigPVD = {0}; sConfigPVD.PVDLevel = PWR_PVDLEVEL_6...原创 2021-10-11 15:28:57 · 930 阅读 · 1 评论 -
关于STM32 HAL库 串口DMA发送
问题1:在使用DMA+UART发送时,在死循环中发送DMA发现只发送一次就不发送了解决方法:这里必须开启DMA中断和UART全局中断,开启后就可以一直发送了。问题2:死循环发送,发现通过判断DMA发送完成标志,数据并没有发送完成就开始发送。解决方法:1.添加延时函数,但是这样显然不是最佳的解决方法。 2.通过判断串口发送完成标志位,可以实现。程序如下所示。HAL_UART_Transmit_DMA(&huart4,send,21);wh...原创 2021-02-01 16:34:45 · 2786 阅读 · 1 评论 -
FreeRTOS互斥信号量与二值信号量使用时的区别
1.互斥信号量互斥信号量的申请与释放是要在同一个任务中进行的,不能在一个任务中申请而在另一个任务中释放。互斥信号量主要解决的是,我在用的时候,别人都不能用。举个例子,我在像一段内存中写数据的时候,不允许别人去写和读的,这时候就需要互斥信号量,写之前获取信号量,写完之后再释放互斥信号量。2.二值信号量二值信号量允许在一个任务中申请,在另外一个任务中释放。二值信号量主要解决的是任务...原创 2020-04-26 16:13:38 · 3066 阅读 · 0 评论 -
关于JAVA做服务器,C做客户端,数据传输无符号数的问题
在做项目时,使用STM32+传感器,通过WIFI传输数据到服务器中,这时就引发了一个问题就是发现一个8位数据一旦超过0x80,服务器接收的数据就会出错。 这是因为java中没有无符号数这个概念,使用byte类型来接收数据,而byte是有符号的,从而导致了接收无符号8位数,超过0x80就会出错。 解决方法就是,java进行数据转换:byte b= -...原创 2020-04-03 17:20:13 · 255 阅读 · 0 评论 -
C语言编写简单的单链表(增删改查)
纯自己写的,就是想试一下自己对指针、链表内容的理解程度,没有经过大量测试,只自己小小的测试了一下。#include<stdio.h>#include<stdlib.h>#include<stdbool.h>struct NODE{ int value; struct NODE *next;};struct NODE *c...原创 2019-11-15 14:35:00 · 862 阅读 · 0 评论