大家好,我是小麦。在嵌入式开发中,经常会用到串口通讯。面对不同应用场景,需要不同的方案。今天我们来讲一下高效,可靠,安全的方案,记得看到最后,会有收获。常见的有串口轮询模式,串口中断模式,串口 DMA 接收传输等等;利用串口的空闲中断配合 DMA 的环形缓冲区模式,可以高效接收不固定长度的消息报文下图中经...
大多数嵌入式项目是否仍需要实时操作系统?考虑到当今高性能处理器的速度以及适用于 Linux,Windows 和其他通用操作系统(GPOS)的实时补丁的可用性,这是一个很好的问题。
单片机裸机项目中,状态机是一种比较常见的编程方式,不管是学习还是做项目,我们应该具备最基础的状态机编程思想。
单片机学习、做项目,经常都会用到类似 printf 这种打印输出的时候。比如:打印输出日志信息打印输出调试信息查看实时数据等而 printf 用的最多的就是UART(重定向串口) 。其实除了串口,也可以使用其他底层接口,I2C、SPI、CAN等这些常见通信接口也是可以的。因为CAN的通信速率相对更高,我之前很多项目不管是传输数据...
比如我们在使用STM32库的断言(assert),你会发现官方提供了包含“__FILE__、__LINE__”的代码。
但是人为操作总会出现纰漏,希望只要代码被重新编译过,那么bin文件就包含新的时间信息,而这个信息是可以从外部通信或printf来查看的。
不知道你们初学RTOS的时候,是不是也有这样的疑问:MCU裸机应用程序如何迁移到RTOS实时操作系统中?
今天给大家分享一种AT命令通信解析模块,支持裸机(at_chat)和OS版本(at)。适用于modem、WIFI模块、蓝牙通信。
今天介绍一款我工作上经常用到的一款VSCode的插件-VsCode Action Buttons,这个插件可以释放手敲命令行清除、编译、运行、部署到目标机等操作,具体功能可由开发者自由定义,详细功能的使用可以参考官网:
之前给大家分享过《MCU批量生产下载程序的几种常见方法》,今天再给大家分享一下通过OTA方式升级固件时,几种Flash(闪存)划分方式。独立型所谓独立型就是专门划出一部分闪存(Flash)空间用来存储引导程序(BootLoader)。如下图:BootLoader:引导程序Firmware A:应用程序Firmware B:下载备份程序Firmware A区用来...
以下是我看到的一个嵌入式综合项目,该项目主要是基于STM32F407、ARM Cortex-M4处理器两大平台,融入了QT5.9.9客户端,TCP、MQTT通信,JSON通信规则,云服务器Linux操作系统,MySQL数据存储转发等技术。这个项目作为毕设以及日常学习开发非常nice!
PID在嵌入式、自动化领域应用非常广泛,但大部分人包括开发者都没有弄明白其中原理,下面通过案例来描述PID的原理。
从今年的MCU市场趋势来看,AI计算能力、蓝牙5.4、Wi-Fi 6/6E、GPU IP、新型存储器以及更先进的制程是MCU市场“内卷”的主要重点。但MCU作为“小而美”的产品,拼性能是一个路线,拼小巧精致也是一个路线。在MCU领域,低功耗MCU是很重要的细分市场。
本篇来再来介绍状态机,状态机在嵌入式软件开发中,是一个比较实用的编程思想,下面来介绍状态机的一些知识点,文末推荐阅读中有之前介绍过的一些状态机编程实现的实例。
在嵌入式系统中,随着我们的进程越来越多,难免不同进程之间要互相传输一些数据,那么这个时候该怎么办呢?
单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。虽然单片机不擅长实现算法和进行复杂的运算,但在某些特定场合,不可避免地要用到数学运算。
液晶显示(LCD)在显示生活中随处可见,像液晶电视、电脑/手机液这类晶显示器是我们比较熟悉的,除此之外,还有一种段码式液晶显示屏也大量在应用。
我最近在测试一个M0+ MCU的运行功耗,测试代码采用如下最简单的方式,即main函数里只跑一个while(1)空循环,测试出来的电流是1.11mA,使用的IDE为KEIL MDK,优化等级为0
都说MCU本身不算什么高级东西,在MCU开发过程中,需要按照一定的标准化来执行,比如对变量,函数的定义,要确定他的生命周期,调用范围,访问条件等;常用的通信协议读写的协议往往应该抽象化,规定固定的输入输出,方便产品移植。
做嵌入式开发不能只想着裸机,有些小项目确实用简单裸机实现就可以了,但长期来说,我们还是要“做大做强”,所以,要么上RTOS,要么有框架思维。