自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 printf函数重定向后无法输出问题

在完全一致的代码下,如果没有勾选MircoLib库,就算代码的前半部分没有用到printf函数,只用了普通的串口输出函数,也会导致无法输出。背景:使用GD32E230C8T6芯片,发现串口无法输出(对stm32应该也适用)可能会出现两个报错,具体可看这位博主的文章。解决方法:将MicroLib库勾选上。

2024-03-23 15:19:55 161

原创 STM32实现printf输出到串口

printf的底层操作实际上就是使用fputc函数一个一个输出字符到屏幕上,所以我们只需要将fputc函数进行修改,使其功能变为通过串口输出一个字符即可实现printf的重定向。这是因为DMA传输的速度取决于串口发送的速度,在串口发送H的时候,后面的ello world!都会调用fputc函数,而这时DMA仍然在进行H的发送,所以导致最后只发送了一个H。DMA能够大大提升串口的传输速度,既然能够实现printf的重定向,能否和DMA结合,在调用方便的基础上,提高传输速度呢?

2024-02-26 20:35:10 484

原创 STM32HAL库故障——HAL_DMA_Start无法多次调用

在使用DMA进行存储器到存储器之间的数据转换时,只有第一次调用HAL_DMA_Start()函数能够正常调用DMA,之后都无法调用DMA。如果传输完成,该函数将会把DMA_HandleTypeDef结构体的State成员被置为HAL_DMA_STATE_READY。即DMA_HandleTypeDef结构体的State成员被置为HAL_DMA_STATE_BUSY。在第一次调用HAL_DMA_Start()函数之后,DMA将会被标记为BUSY状态,这个函数可以检测指定的DMA通道是否传输完成,

2024-02-14 20:17:46 296 1

原创 STM32CubeMX端口重映射

解决方法:在代码初始化部分加入一句: __HAL_AFIO_REMAP_SWJ_NOJTAG();背景:想使用PA15作为TIM2_CH1,但是发现STM32默认将其作为JTAG引脚之一。即可关闭JTAG的端口复用。

2024-02-04 21:55:39 147 1

原创 MySQL导入大量数据

背景:希望将某个txt文件中的数据全部导入MySQL中某个已经被建好的数据库中。本文记录了可能会遇见的多种问题,给出了作者本人的解决方案。

2023-11-29 23:31:56 71 1

原创 STM32学习笔记——看门狗溢出时间配置

以下介绍来自百度百科在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统的陷入停滞状态,发生不可预料的后果。看门狗,又叫 watchdog,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般是连接到单片机。

2023-09-18 23:55:38 1046 1

原创 STM32故障处理——HAL_Delay卡死

检查发现是因为HAL_Delay()需要用到SysTick定时器,而本人使用的STM32CubeMX对SysTick的初始中断优先级设为了15(最低),所以按键中断进入后调用HAL_Delay()函数发生卡死。打开STM32CubeMX,进入Pinout&Configuration->System Core->NVIC,将SysTick的优先级设置得比按键中断更高即可。简单来说就是比谁的数字小,小的优先级高。比完抢占优先级比响应优先级。前面的是抢占优先级,后面的是响应优先级。

2023-09-17 13:26:31 1554 1

原创 STM32故障处理——printf函数调用失败

笔者使用STM32进行编程,在进行了printf的重定向之后,仍然无法使用printf直接通过UART输出到PC端。检查发现需要勾选魔术棒->Target里面的Use MicroLIB。勾选之后重新编译下载即可正常使用printf。

2023-09-17 13:17:32 400 1

原创 第一个Github仓库

将编写的hello_github.php文件复制到路径 C:\Users\zando\hello-github 下。输入 git commit -m "Add hello github script by php",回车。出现这段输出的原因是hello github只是添加到了本地,没有上传仓库。进入管理hello-github,输入 git status ,回车。这时候再返回刚才的页面,刷新,就可以看到我们更新的文件了。打开安装Git自带的Git Bash,输入如下。输入 git log ,回车。

2023-09-13 23:53:13 40 2

原创 51单片机学习笔记 ——(六)LED点阵屏

LED点阵屏实际上就是将每一个LED作为一个像素点,通过矩阵的连接方式进行连接,用少数IO口操作大量的LED显示出图像。LED点阵屏与之前提到的数码管类似,都是将每行每列LED的阴极或阳极连接,达到逐行逐列扫描控制的效果,当某个LED满足导通条件则会发光。通过控制串行输入数据、寄存器时钟、串行输出时钟,74HC595可以将串行输入的数据并行输出。图片来自b站江科大视频:当串行时钟的上升沿到来时,串行数据被压入缓存区(类似于手枪弹匣上子弹,一颗一颗压入,最先压入的在最底下)

2023-09-03 14:32:51 458

原创 大学生数学竞赛教程(蒲和平)PDF教材分享

链接: https://pan.baidu.com/s/1-eLxT-pk0aeeewHq3lsJWQ?pwd=4raj 提取码: 4raj。希望更多需要资源的人都能获取资源。

2023-09-02 16:49:59 1813 3

原创 51单片机学习笔记 ——(五)串口通信

UART是一种串行、异步、全双工的通信方式(下图来自江科大B站视频)此处出现了异步这一个概念,在通信过程中,两个设备之间必须约定好传输速率,即波特率,每秒传输bit的位数。否则会出现传输错误的现象。51单片机内部只设置了1个UART,具体位置可以参考原理图查找。同时设置了4种传输方式。

2023-08-31 10:00:40 832 1

原创 51单片机学习笔记 ——(四)中断系统

中断和函数类似,但是区别在于函数按照程序运行的顺序执行,中断的发生受紧急事件的影响。下面是从数据手册截过来的图 ,用于理解中断系统的概念。这里引用b站江科大的例子:学习的时候,有人打电话给你、家里的水烧开了,这些都可以作为中断来打断你的学习。电话、水壶都是中断源,我们应该根据自己的情况来判断轻重缓急,判定中断源的优先级别。处理完中断后,继续回到刚才的地方学习。江科大的图:同样也类似于C语言里面的函数调用。

2023-08-27 11:36:40 70 1

原创 51单片机学习笔记 ——(三)定时器

定时器属于51单片机的内部资源,不同于前面的外设。定时器的核心部件就是一个计数器,通过脉冲信号来进行计数,所以也可以看成计数器。脉冲信号来自系统时钟时,为定时器;脉冲信号来自外部时钟时,为计数器。定时器的作用(1)用于计时系统,实现软件计时,使程序每隔一段时间完成一项固定操作。(2)替代长时间的Delay,提高CPU的运行效率和处理速度。

2023-06-16 14:51:41 898 2

原创 51单片机学习笔记 ——(二)矩阵键盘

而矩阵键盘是输入元件,所以我们矩阵键盘采用的扫描是输入扫描,以非常快的速度不断循环读取IO口的值,达到与正常按键相同的效果。但是与数码管的扫描略有不同,数码管是输出元件,所以数码管的扫描是输出扫描,我们不断循环输出不同的值,利用人眼的视觉暂留实现我们需要的操作。与之前的独立按键进行比较,如果我们单独看矩阵键盘的一行或者一列,就会发现它们有着相同的结构,在此用列来进行比较(用行同理)。但是如果采用矩阵的连接方式,我们需要的IO口数目就会变成行+列个,矩阵的行列数越多,减小的程度就越明显。

2023-06-11 14:18:25 354

原创 51单片机学习笔记 ——(一)LED数码管

如果想要让数码管显示 1 2 3 4 5 6 7 8 ,就需要不断地扫描数码管,利用人眼的视觉暂留来实现,当然其中需要一步消影操作,否则数码管的显示会非常模糊,具体内容可以看江科大的视频,在此不作详细展开。观察动态数码管模块,可以看出8个数码管每个的阳极引脚接到了同样的8根线上。我们想要操作哪一个数码管,就只需要位选该数码管即可。想让LED8输出低电平(位选LED8对应数码管),只需要输入端输入 0 0 0 即可(因为前面还有一个取非)。这样就可以用3个IO口控制8个数码管的位选了。

2023-06-11 11:51:49 588

原创 Visual Studio 2022手动安装EasyX

手动安装EasyX详细教程

2023-05-19 18:36:30 2091 4

空空如也

空空如也

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

TA关注的人

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