- 博客(14)
- 收藏
- 关注
原创 CubeMX 配置LWIP 使用中断的方法(2023.10.11)
cubeMX配置ETH中断接收的方法。最近cubemx已经不能再在配置界面中通过RX.MODE来选择接收的方式, 因此需要来修改LWIP内核源码来实现, 方法如下:
2023-10-11 16:52:33
1816
4
原创 STM32 HAL 库 串口 函数HAL_UART_Transmit的BUG问题 及解决方法
发现STM32HAL库的串口函数,在处理海量数据的时候, 存在bug, 导致不能将指定数量的数据全部发送出去, 在发送几千个数据包后, 会出现单个数据包发送不完整的情况(200个字节一个包, 实际上可能只发送了60个字节出去,就没有任何征兆的提前结束了,并开始发送下个数据包)。因此, 在需要使用串口发送大量数据的时候, 建议不要使用HAL库的函数, 而是直接对寄存器操作。
2023-06-01 15:38:51
4812
原创 再谈51单片机的printf串口输出问题
继前段时间利用串口重定向实现printf的串口输出后,就发现在实际使用过程中,总是会出现一些奇奇怪怪的问题。有的时候还和定时器冲突,总得来的说,51的性能不适合用C语言标准库的printf,除非自己写个printf 只用需要的功能, 把其他的都去掉。
2023-01-25 21:04:23
833
1
原创 STM32开发中printf利用重定向方法输出到串口(CubeMX 基于HAL库方法,带实际项目应用技巧 巧用goto语句)
在main函数中使用goto语句跳过初始化, (其实也不是跳过初始化, 而是跳过系统自动生成的部分,使用用户代码部分中的初始化, 来避免更改配置后被重置的一些问题。在stdio.h中的printf 原本输出到控制台, 在单片机应用中一般将其改到串口, 并利用串口输出信息来调试程序,非常方便。在生成的代码中,我们可以看到,基本外设的初始化等基础函数及框架都已经由CubeMX自己生成完毕,并能够直接使用了。根据串口的情况, 配置波特率,数据长度,停止位,及校验位,如下图绿框。在系统内核中,配置系统时钟。
2023-01-16 22:43:59
3608
原创 关于轮询,中断和DMA
轮询就是每隔一段时间查看下是否需要执行某种任务, 例如while中做个if判断。DMA是指直接对存储进行写入操作, 不需要经过CPU。51, 主要用的是轮询和中断。轮询,中断和DMA是Hal库的三种编程模型。
2023-01-10 22:06:46
294
原创 使用51单片机编写计时器(分钟,秒钟分离版)
针对网络上大部分例程序只有倒计时秒 , 无法一眼看出还剩多少时间,因此做考试计时器不具备实用性。因此,编写一个 分钟,秒钟分离的版本,方便考生的时间控制。/*==================================================================编写时间: 2022.04.21设计目标:四位共阴极数码管, 前两位为分钟后两位为秒钟。设定时间为90分钟,开机后开始倒计时。硬件电路设计:数码管使用4个N
2022-04-21 20:31:12
9171
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人