![](https://img-blog.csdnimg.cn/e68061ebbdfb49218ead94fb70696c19.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
嵌入式开发笔记
文章平均质量分 56
记录日常工作归总记录
KAMI STUDIO
DO A FUNNY THING
展开
-
使用LvglFontTool V0.4工具生成的外部bin字库显示异常
使用LvglFontTool V0.4工具生成外部字库显示异常原创 2024-01-22 11:35:07 · 1019 阅读 · 0 评论 -
使用JFLASH实现文件程序自动化合并及下载功能
使用JFLASH+bat批处理实现bin文件及程序的自动化合并和下载原创 2024-01-20 15:19:01 · 856 阅读 · 0 评论 -
STM32基于Ymodem协议IAP升级笔记
Ymodem升级原创 2023-02-07 14:27:01 · 1687 阅读 · 9 评论 -
GD32实现串口空闲(IDLE)中断 + DMA机制接收数据
串口IDLE空闲中断 + DMA接收数据原创 2022-12-01 11:38:26 · 6146 阅读 · 0 评论 -
按键驱动框架优化
按键驱动原创 2022-11-23 11:39:19 · 274 阅读 · 0 评论 -
MS5182N(AD7682)驱动开发调试总结(二)
MS5182N(AD7682)驱动开发调试原创 2022-10-08 14:45:40 · 3914 阅读 · 4 评论 -
模拟串口收发驱动(采用IDLE信号机制)
模拟串口收发框架原创 2022-08-16 11:24:42 · 895 阅读 · 0 评论 -
LCD断码屏显示应用框架
LCD断码屏显示应用框架原创 2022-07-20 11:07:10 · 1583 阅读 · 0 评论 -
MS5182N(AD7682)驱动开发调试总结(一)
简介MS5182N芯片是瑞盟科技的一款4通道的16位SAR ADC芯片,其对标的是ADI的AD7682芯片,或者说基本上两者功能一样,可以作为国产替代。另外其MS5189(8通道的)对标的则是AD7689。我此次项目中仅使用了MS5182N 。不过还是吐槽一下,其数据手册做的真是无语,虽然明显有直接从AD7682上抄过来的,不过抄的也是不忍足视,我都怀疑其有做详细勘检没。鉴于此,最后我还是直接用AD7682的数据手册。芯片操作芯片拿到手对于软件或者驱动层开发的人来说,首先关注的是其总线操作方式原创 2022-04-15 12:49:35 · 6494 阅读 · 4 评论 -
LVGL使用记 - 数据更新显示
介绍一下界面数据显示方法关键API:/** * Set a an event handler function for an object. * Used by the user to react on event which happens with the object. * @param obj pointer to an object * @param event_cb the new event function */void lv_obj_set_event_cb(lv_ob原创 2022-03-23 11:38:48 · 6641 阅读 · 2 评论 -
LVGL使用记 - GUI-Guider设计使用
gui_guider是NXP官方推出的基于LVGL框架的GUI设计软件,虽说是用于NXP芯片的,但是支持仿真功能,不需要选择MCU型号,可直接生成设计源码,故用此做图形化设计是一个不错的选择。官网下载安装工程及屏幕参数设置设计界面界面设计完之后,先可以运行仿真,点击"Run Simlator",查看界面效果,确认OK,点击“Generate Code”,可以生成代码了,在Code Viewer中可以查看生成的GUI初始化代码打开工程文件,找到generated文件夹,并原创 2022-03-22 16:28:32 · 9841 阅读 · 2 评论 -
LVGL使用记 - 实体按键
介绍一下实体按键在LVGL上的使用。添加输入设备文件,如下图:改写输入设备接口文件,如下图1.屏蔽其他输入设备,保留keypad相关的文件2.添加实体按键底层驱动初始化文件3.添加按键id读取函数4.添加自己的id值5.修改按键id,并返回自己的id6.按键关联绑定对象初始化,放在初始化中。7.按键事件处理至此实现实体按键功能控制屏幕元素功能....原创 2022-03-22 15:45:07 · 8906 阅读 · 13 评论 -
TinyUSB相关文摘
项目有用到USB,芯片厂家给了USB使用案例,里面有TinyUSB的使用例程,觉得非常不错,但相关的资料甚少,因为自己对USB驱动协议这块不是太熟悉,遂尽可能的搜集到一些TinyUSB的资料,集中以供查之。链接1: TinyUSB 各种描述符写法...原创 2022-03-16 13:46:10 · 1085 阅读 · 0 评论 -
灵动微MM32的FSMC接口驱动TFT_LCD屏幕
FSMC存储区域说明(挂载在AHB3总线)BANK1的基地址是0x60000000,不同的子bank地址不同,通过HADDR[27:26]这两位的值确定。HADDR[27:26]BANK SELECT(可挂载4个设备)00 (0x0)BANK1-NOR/PSARM [NE1]01 (0x1)BANK1-NOR/PSARM [NE2]10 (0x2)BANK1-NOR/PSARM [NE3]11 (0x3)BANK1-NOR/PSARM [NE4]原创 2022-02-19 20:38:33 · 1010 阅读 · 0 评论 -
MCU通过串口向终端发送汉字乱码之解决办法
代码里有要通过串口发送显示终端,发现不能显示,用串口助手监测,发现输出的是乱码,猜到是字符编码引起的,将编译器(Keil)字符环境改为GB或者ANSI,都无效。上网搜索,将原始文件用记事本(应该也可以用其它软件)打开,可以看到其编码格式,然后另存为副本,并选择ANSI格式,返回删除原来的,恢复副本为原来的名称替代,编译下载后即可。...原创 2021-12-17 13:01:34 · 1208 阅读 · 0 评论 -
STM32突然不能下载,或者说只能BOOT0置高才能下载调试记
昨天调试新项目时出现如此一个现象。项目是在MDK上新建的,主要基于FreeRTOS平台,而RTOS文件是用MDK自有包。我也比较喜欢这种,不必自己还要外挂FreeRTOS文件。简化不少工程目录。因为FreeRTOS我之前没怎么接触过(只接触过rt_thread),不是太熟悉配置过程,不过好在网络对此有许多教程,如这篇连载就很详细:FreeRTOS基础篇教程目录汇总按着其介绍,完成了系统配置。然后就是编写自己的代码。后来不知调试着,突然不能下载了,起初以为是ST_LINK V2烧坏了,就是这玩意儿原创 2021-12-11 09:55:01 · 4406 阅读 · 4 评论 -
STM32的GPIO输入输出寄存器方式快捷设置
引用连接转载 2021-12-10 12:07:07 · 267 阅读 · 0 评论 -
步进电机驱动小结
最近工作接触到步进电机的项目,经过一段时间的研究,大概了解了一些知识,现做小结。首先引用该文:步进电机基本结构和工作原理已经比较详细的介绍了步进电机的驱动原理。由上文可知,步进电机是由频率驱动控制,应该属于调频控制。但是控制电机的频率并不是无限且随意的,它有最低启动频率这个参数,一般由厂家提供或者个人试验得出的,因为频率不够的话,驱动的力矩不足以使电机迅速转动起来电机的转速公式又上文知道:---------------------------N = (θ * f * 60) / 360原创 2021-12-09 09:29:48 · 1066 阅读 · 0 评论 -
大小端模式
如下图总结:大端模式:数据的高字节存在内存的低地址上[高值低址]小端模式:与之相反原创 2021-10-08 15:46:49 · 74 阅读 · 0 评论 -
串口调试日志打印颜色输出
#日志颜色格式说明颜色日志格式格式:\033[显示方式;字体色;背景色m如缺省默认:\033[0m //表示结束打印-\033 八进制转义 表示ESC-显示方式0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、5(闪烁)、25(非闪烁)、7(反显)、27(非反显)-字体色30(黑色)31(红色)32(绿色)33(黄色)34(蓝色)35(洋红)36(青色)37(白色)-背景色40(黑色)41(红色)42(绿色)43(黄色)4原创 2021-10-08 15:31:40 · 5102 阅读 · 1 评论 -
RT_Thread+FreeModbus使用笔记
废话一段先:最近接手一个带rt_thread程序的项目,里面的Modbus485使用的是FreeModbus,忏愧,由于之前还未接触过RTOS,还好,前人栽树,后人乘凉,由于原来的程序逻辑已经写得比较完善,所以我也没有太投入太多去修改,现在项目接手一段时间后,也对让这个RTOS有了进一步的了解,闲暇之时,也专门研习了一下,虽说原来代码逻辑良好,但是大量的独立变量,看的人眼花缭绕,阅读是在不是很好......原创 2019-07-11 12:26:35 · 8123 阅读 · 0 评论 -
FLASH存储浮点数据的解决办法
需求: 参数的数据类型为浮点数据,需要存储至FLASH中。解决办法:采用联合体联合体特性:联合体内的参数,共用一块内存。案例://构建联合体数据结构typedef union{ float fp;//浮点 unsigned char ch[4];//单字节数组,组成4字节}fp_un;/****应变系数设置*/void strain_factor_set(float in_value){ unsigned int tmp_dat=0; fp..原创 2021-09-08 15:27:57 · 1036 阅读 · 7 评论 -
关于AD7193的SPI总线协议时序操作一感
最近在项目中有用到AD7193这款24bit的ADC芯片,在最对其驱动操作的过程中,花费了不少的时间,主要是对总线的时序了解不深,基础不牢所致,经此对其了解愈加了然,故记录所感。首先AD7193用的是SPI的MODE3模式!!,而不是通行的MODE0模式!!!。且看下面数据手册给出的时序图:了解到: SCK空闲状态时高电平, MOSI在第二个边沿(上升沿)移出数据。-------------------------------------------------CPOL=0表示,S...原创 2021-08-26 17:21:02 · 1364 阅读 · 1 评论 -
STM32L432的内部MSI晶振使用
----记录一下STM32L432芯片的功能开发使用。-由于板载尺寸的尺寸限制,硬件未配置外置晶振,故而只能使用内部晶振作为系统时钟源。配置流程如下:/** * @brief System Clock Configuration * @retval None */void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitSt原创 2021-08-13 15:39:50 · 2567 阅读 · 2 评论 -
断码屏显示驱动开发
驱动示例:如下图纸可以看到上面屏幕给出的参数是:驱动工作电压:3.0V驱动模式:1/4DUTY,1/3BIAS显示方向:12点钟方向第一张图纸知道,4个COM和9个SEG引脚选用专用的LCD液晶驱动芯片,针对此驱动的引脚数,最终选择TM1620,支持4x10和6x8两种模式。对于此LCD屏幕,我们可以选择前者驱动方式,根据数据手册,在程序之中做下寄存器/命令配置即可。显示区域的每个点段,(即相当于驱动数码管的每个段),在表中给出了位置。我们可以将显示内容从左至右依次按照SEG1~SE原创 2021-08-03 17:45:43 · 5246 阅读 · 3 评论 -
STM32F030的低功耗案例(RTC闹钟中断定时唤醒喂狗+按键外部中断唤醒)
最近使用到低功耗方案,采用的是STM32F030C8T6芯片,由于任务开启了看门狗,进入休眠后(采用的是STOP模式),需要及时喂狗,故而使用RTC闹钟中断定时唤醒来喂狗。对比三种休眠模式:就设备的使用情况和功能需求,采用STOP模式/* 三种休眠模式说明-各有不同1.Sleep mode In Sleep mode, only the CPU is stopped. All peripherals continue to operate and can wake up the CPU when原创 2021-08-03 16:54:11 · 8377 阅读 · 3 评论 -
矩阵按键驱动开发
最近在做项目中,有开始用到矩阵按键,由于之前做的项目基本是独立IO按键,所以这块算是没接触过。经过从网上了解到的情况,大已明白其原理:列扫行读(基于下面的硬件方式)。 不过网上提供的案例代码有些过于冗余,遂自己尝试写了一下,已验证OK。先附上硬件设计原理图: 如下是3x4的矩阵键盘再附上核心的三个函数/*按键信号读取,判断是否按下被拉低*/unsigned char key_read(unsigned char row_pos,unsigned char col_pos,unsigned..原创 2021-04-07 21:42:51 · 236 阅读 · 0 评论 -
关于I2C的一点技术文摘
I2C协议及配置硬件参数演算:DESIGNING-WITH-I2C-BUS-DEVICESGPIO模拟I2C案例:AN12841原创 2020-10-15 17:32:01 · 123 阅读 · 0 评论 -
嵌入式编程中总线驱动的抽象提取
何为总线?百度百科给出的定义为:总线(Bus)是指计算机组件间规范化的交换数据(data)的方式,即以一种通用的方式为各组件提供数据传送和控制逻辑。在嵌入式编程中,IIC总线和SPI总线驱动是用的比较多的,在裸机编程中,如果有多个SPI/IIC设备,我们可能每个设备的驱动都要写一遍,这样增加了代码的冗余度,亦不便于管理。所以我们可以将这个驱动协议抽象提取,以指针化的方式编写写处协议驱动,然后每个设备只要初始化几个硬件接口函数(因为最终还是要驱动GPIO的),然后注册(传入相应的设备指针)对应的设备即原创 2020-09-04 12:25:34 · 283 阅读 · 0 评论 -
MQTT.fx客户端使用方法
MQTT.fx是调试MQTT协议一个必备的工具软件,这里归纳粗略介绍下客户端使用方法。1)下载安装。下载安装 这个网上搜一下,就应该能找到不少。这里提供一下网盘下载链接链接:https://pan.baidu.com/s/1eNABA8QYFYAYOm7phtfmbw 提取码:h9fp2)配置MQTT客户端参数打开MQTT.fx;点击设置图标在Profile Name 栏可随便填入一个名称,代表你当前使用客户端的名称。在Profile Typer 栏选择MQTT Broker即可。原创 2020-08-11 15:47:35 · 18335 阅读 · 5 评论 -
中移M5311型号NBIoT模组MQTT开发记
由于公司项目需求,需要NBIoT模组,采用MQTT协议连接自有服务器,之前挑选的是使用安信可的N92模块,但因为开发到最后发现有负载字节长度限制,不满足我们现有数据的长度,所以又重新选了这个模组来开发。因为模组支持MQTT协议,所以直接采用AT指令进行数据命令交互通信,这种方式也是最简单,开发最快的。如下截图,乃是其AT指令手册的MQTT有关的AT指令篇。在开发使用了多款不同的通信模块之后,也知道其无非分为这几个步骤:1.等待模块初始化;2.注册激活网络3.MQTT连接参数配置4.MQTT登原创 2020-07-28 17:41:53 · 4467 阅读 · 2 评论 -
安信可Ca-01 4G模块调试
Ca-01 4G模块调试原创 2020-07-13 16:38:41 · 602 阅读 · 0 评论 -
Keil生成bin文件的方法
在keil中生成bin文件的方法如下:在上面栏中勾选并添加该语句:fromelf.exe --bin -o “$L@L.bin” “#L” 即可。原创 2020-06-03 11:34:57 · 419 阅读 · 0 评论 -
STM32模拟串口驱动(带校验位)
年前一个项目中,由于串口的资源紧张,硬件使用的是主MCU-STM32F030C8T6,其两个硬件串口都被使用了,而另外一个器件间的通信也需要串口通信,故不得不采用模拟串口的方式,该器件的通信要求是:4800bps /8/N/EVEN。对,是采用偶校验的方式。之前一直习惯无校验方式,一下子说要采用偶校验,所以不得不再深度查阅和了解串口的相关信息。以下即是所了解的 校验位信息的解读说明://...原创 2020-04-13 19:51:56 · 3760 阅读 · 2 评论 -
AM2302温湿度传感器驱动调试笔记
手头有一块AM2302温湿度模块,之前没有用过,最近闲暇,就尝试写一下驱动,虽然协议很简单,但也零零散散花了3天时间,主要是一方面发现原先用的延时器不准,导致一直调试不成功,所以遇到调试不上,先尽量检查一下延时函数的精确度,不宜偏差过大。现贴参考代码如下:#ifndef _AM2302_H__#define _AM2302_H__#include "bsp.h"#define A...原创 2019-12-21 17:02:50 · 1676 阅读 · 0 评论 -
阻塞任务环境运行框架的构建
前段时间,接手一个项目,刚开始看了下代码框架,一点时间片的思想都没有,有点类似于操作系统样的,一个事件一个while,这样导致看到代码里面的喂狗处很频繁,而且代码重复率很高,整个代码的耦合度非常之高,改动一处,可能就会影响另一个地方。由于它始终不是一个操作系统调度,而是靠由一堆事件标志来进行切换,最终还是前后台轮询框架,由于接手时,需要增加WIFI功能框架,最开始我想使用时间片调度框架嵌入到里面,...原创 2019-12-11 11:05:11 · 160 阅读 · 0 评论 -
一份按键驱动框架
这份是我在实际工作中摸索并逐步形成的一个比较好与可扩展性比较稳定的按键驱动框架,自己已经在51和ARM中都运行过,无论是普通实体按键还是触摸按键皆可采用,主要实现了长按和短按功能,按键是嵌入式中一个不可忽视和必须掌握的功能,故分享之。//1.实体按键,以STM32F0(Cotex_M0)芯片为例//api function:void Button_getValue(keyEvent_s...原创 2019-11-01 11:16:14 · 684 阅读 · 2 评论 -
常用二分查表法函数
二分查表法原创 2018-12-07 13:57:14 · 3161 阅读 · 0 评论 -
根据公历年月日求星期函数
在嵌入式开发中,特别是RTC驱动中,在一些地方有时需要人工算取星期值。现基于基姆拉尔森公式所编写的一个通用函数,现贴源码如下:/*函数中部分变量可依据实际应用作相应变更*/unsigned char Calc_Week(unsigned int yeartxt,unsigned char monthtxt,unsigned char daytxt){unsigned int week...原创 2018-12-07 14:14:28 · 593 阅读 · 0 评论 -
单片机ADC温度采集原理
以上拉电阻形式为例:据分压公式有:若 ADC 采集精度为 Nbit;则 VCC 即对应的满量程 ADC 值为 2^N=C(常数);若 VADC 端口当前读取的 ADC 值为 X;则有:由于 X 为已知量;ADC 采样精度亦被确定,RU 为已知量所以有:查找 NTC 数据手册的阻温(R-T)映射表,或者先期按上面公式转化为ADC-T映射表,可得出 NTC 当前测得环境温度。...原创 2018-12-10 18:28:42 · 11381 阅读 · 0 评论