自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法-电梯调度逻辑

电梯调度算法也是磁盘调度算法,为磁盘读写请求保持一个队列,并且在该队列上执行排序和合并功能。

2024-09-29 17:40:49 140

原创 C#绘制动态曲线

用于实时显示数据动态曲线,比如:SOC。

2024-09-29 17:37:43 358

原创 架构设计-分层思想(二)

嵌入式软件因为直接驱动硬件,设计架构时,无论多么复杂的产品,首先,第一步要做的就是剥离架构,解耦合,因为硬件都有可能会变化,把硬件完全剥离出去,才能最低限度的去修改软件。首先,站在架构的角度去设计,先画出来一个框架图,反复推敲,就像建筑设计师一样,先有一个抽象的大厦设计图,不断的优化,然后把按照图纸一步步实现,实现的过程无需太多的脑力。软件架构并非一层不变的,随着业务和需求的变化,架构也需要适当的调整,一个好的架构要不断的迭代、优化、重构。软件设计犹如作文,古人作文,讲究立意为先。5.功能分层,单向调度;

2024-09-04 12:46:28 226

原创 嵌入式怎么选行业?

国内2000~2010这十年处于经济飞速发展期,2010~2020年很多细分领域出现了龙头企业,越往后创新行业越来越少,所以,资本对政策是最敏感的,一旦资本全部涌入这个行业,必然会造成大量缺口,薪资也会跟着水涨船高。每个城市都是自己的发展规划,未来5年重点发展什么领域,通过关注一下城市的产业集群,选择这些行业自然发展就不会差到哪去,像深圳的“20+8”产业集群。看新闻联播,政策扶持哪些行业,大力发展哪些行业,那么,这些行业会迅速崛起,比如,近半年新闻联播提的最多的:人工智能、智能网联车、储能、

2024-08-28 20:39:28 299

原创 嵌入式学习路径

这个阶段需要一个大平台,做的产品要有架构设计,在一个稳定的架构下多人协作设计不同的模块和软件层次,如果能参与这样的项目,对于软件编程思想会有一个提升,更多的会运用面向对象的思想去设计,剥离硬件平台的依赖,能够以更低的时间成本切换到不同的硬件平台。开发的产品从一些简单的数据采集类,变成多数据采集,通信,控制逻辑的产品,单片机也51转到STM32,通过STM32开发一些裸机类的产品,这时候的项目难度增加,需要数据处理、通信协议解析及控制逻辑。

2024-08-28 20:37:28 173

原创 打羽毛球让我想通了一些技术问题

学习羽毛球的过程是一个动作一个动作学习,最后连贯起来,形成一套动作,比如杀球,先练好握拍,架拍,引拍,挥拍,下压,重心变换,每一步学会之后,杀球就基本学会了,这就相当于问题分析的过程,产品遇到问题,先拆分成一个一个小问题,针对每个小问题逐个解决,最后问题就迎刃而解了。工作中也是,每个行业都有优秀的,平庸的,垫底的,你遇到的同事都有可能,怎么去和他们打交道,就和打羽毛球配合一样,强强联手不一定能赢,强弱组合也不一定会输,要学会去兼容,才能得到一个好的结果。羽毛球也是一项技术运动,跟工作中很多问题都是相通的。

2024-08-21 12:08:37 141

原创 什么是产品开发思维?

见过有一些工程师老手遇到问题,总是看现象猜测是哪里的问题,这是完全错误的分析思路,现象只是表象,要透过现象看本质,一个问题可能会产生几种表象,要拿具体的数据来验证猜想,从现象一步步验证、确认问题,逆向推导找出问题点,再从问题点去发现问题的规律性,这就是分析问题的思维,把问题分析清楚了,基本上就解决50%了。这里借用2022年雷军演讲说过的一句话,在软件工程里学到的最重要的道理,可能会出错的地方,一定会出错,所以,每一个地方一定要去检查,只要你用这种认真的精神去做每一件小事,它就一定可以做好。

2024-08-21 12:07:47 145

原创 嵌入式行业现状

公司在领域布局产业的时候,通常会选择那些市场大,有一定行业壁垒,没有被垄断的行业,那么我们个人在选择的时候也是一样,要学会赋能,比如:MCU+电机控制,MCU+逆变器,MCU+PID算法等等,这样就不一样了,在一个行业深耕几年积累到经验之后,就会有很多的选择机会,当然,如果个人能力在行业内70%以上水平,薪资待遇这一块都不会低的。这几个热门行业的细分产业有:机器人、低空经济、新能源汽车、充电桩、便携储能、储能换电等等,所以会有很大的市场,相对来说工作机会多一些,如果赶上风口行业,工资还会来一波增长。

2024-08-19 12:05:19 176

原创 嵌入式入门学习规划

STM32现在都是从HAL开始学,已经不需要手动初始化造轮子了,有一个对新手非常友好的图像化编程工具STM32CubeMX,把需要的外设配置好,时钟分频设置好,直接生成基础环境代码,通过调用封装好的API,回调函数,在这个上面实现自己的业务逻辑即可,效率大大提升。信号量、消息、邮箱、消息队列等这些怎么使用?做技术不单单是学习技术这么简单,做技术不是目的,要了解市场,学会做一个技术商人,让自己的技术产生价值,不要陷入打工人的陷阱,技术只是手段、工具,是为了实现更高的价值,要去打造自己的圈子,这才是终极目标。

2024-08-19 12:04:42 125

原创 STM32CubeMX一款好用的开发工具

1.基本概念STM32CubeMX采用简单易用的图形界面,可以帮助您快速配置硬件和软件,并生成适用于您的STM32平台的C代码项目。2.特点1) 缩短软件研发周期,提升软件开发效率;2) 设计灵活,自定义外设配置;3) 免费使用。3.市场现状STM32在全球MCU市场的占有率达到了五分之一,而在中国市场,其连续10年的复合年增长率(CAGR)高达27%,在国内占有50%以上的市场。单片机开发从业者,大部分都是从STM32开始学起,结合正点原子开发板,一步步入行。

2024-08-19 10:19:01 289

原创 软构件12-I/O电平滤波算法接口

在PCBA上有一些过大电流的地方,如果有I/O电平操作,这时就容易受干扰,可能会偶发出现一个毛刺,影响功能,为了设备稳定运行,通常会采用I/O口滤波处理,把偶发的毛刺给过滤掉。二、I/O电平滤波算法。

2024-08-16 14:52:33 176

原创 架构设计-分层思想

分层设计是为了剥离硬件环境的依赖,使软件系统更好复用,当更换硬件方案时,只需要修改底层函数的初始化,抽象层和服务层完全不需要改动,这样极大的减小时间成本,平台能够很快投入使用。框架搭建好之后,就是分支设计,分支依据单向调用原则,只能通过上层一层一层去调用到底层的函数,服务层--->抽象层--->HAL层,每一个服务层的业务功能都按照这样的规格去实现。抽象层:用来隔离底层硬件而设计的层,上层只能通过这个抽象层调用底层函数,底层不能反过来调用上层,只能是单向操作,这样逻辑会比较清晰。一、为什么要分层设计?

2024-08-15 18:30:53 327

原创 STM32G070休眠例程-STOP模式

主控是STM32G070,在低功耗休眠模式时采用Stop0模式,通过外部中断唤醒,唤醒之后,即可开启对应的功能输出,另外程序中设计有看门狗8S溢出,这个采用RTC定时6S周期唤醒去喂狗,RTC唤醒喂狗的过程中,设备现象上看不出来。1.进入休眠之前,I/O电平根据电路设置,以降低休眠时硬件功耗;2.进入休眠之前,所有计时及标志位清零;3.唤醒之后,重新初始化一次系统时钟;4.RTC唤醒时,不执行功能输出;2.RTC周期唤醒,外部中断唤醒。1.RTC周期唤醒配置。1.STOP0休眠模式。2.外部中断唤醒配置。

2024-06-24 10:58:23 514

原创 STM32CubeMX配置-RTC周期唤醒

MCU为STM32G070,采用内部时钟32KHZ,配置为周期6s唤醒,调用回调函数,进行喂狗操作。初始时间、日期、周期唤醒时间配置。调用回调函数,进行喂狗操作。

2024-06-16 22:35:54 494

原创 STM32CubeMX配置-外部中断配置

MCU为STM32G070,配置为上升沿触发外部中断,在上升沿外部中断回调函数中进行相关操作。查看规格书中管教描述,找到I/O对应的外部中断线,然后进行如下上升沿触发外部中断配置。调用上升沿外部中断回调函数。

2024-06-16 22:13:56 320

原创 STM32CubeMX配置-看门狗配置

一、简介 MCU为STM32G070,LSI为32K,看门狗IWDG配置为4S溢出,则配置是设置分频为32分频,重装载值为3000。二、IWDG配置1.外设配置2.时钟配置

2024-06-16 21:23:42 352

原创 STM32CubeMX配置-IIC读写

通过STM32G070配置IIC协议,读取智融SW35xx的电流,读取之前需先配置ADC读取的数据类型,再进行读取。配置的是硬件IIC2,标准模式,100KHZ。

2024-06-02 16:16:42 614 3

原创 软构件8-数据类型定义(结构体,位域)

其他.c函数调用PS_PanelFlt_t内变量,只需声明一下.h即可:#include "SwitchCtl.h"。2.和结构体定义的方式类似,在结构体成员的 后面加上 “:位数”就是他们所占的大小。定义的结构体中有:变量数据、位域标志位。1.作为开关量使用,0和1。

2024-04-21 21:02:19 128

原创 软件加入版本、日期、时间

_attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。attribute,翻译为“属性”,在C语言中,是一个关键字,语法格式为:__attribute__ ((attribute-list))日期、时间:printf("CompileDate: %s %s\r\n",__DATE__,__TIME__);软件版本一般是用空定义,记录内部版本、外部版本;

2024-04-01 22:07:04 229

原创 双向DC-DC BUCK/BOOST电路

如果是适配器输入,则采用恒功率充电方式,只需抬高电池端的电压,得到的电池端功率为适配器范围即可,可以根据不同的输入电压适配多种适配器充电,充电过程中可能需要降压、升压模式相互切换。此电路主要是实现双向DC-DC,双向DC-DC:放电输出和充电输入,4路PWM要采用互补输出模式,Q1、Q2为一路互补输出,Q3、Q4为一路互补输出。放电输出方向是BAT-->DC,原理上:Q1恒定导通,Q2恒定断开,Q3、Q4通过脉宽调试控制使输出DC的电压为12V。充电输入方向是DC-->BAT。

2024-02-14 21:30:50 756

原创 STM32CubeMX配置-互补PWM及死区配置(STM32G070)

本工程是基于STM32G070的高级定时器TIM1的通道2和通道3产生两路互补PWM,频率为320KHZ,PWM周期200(即为占空比100%)。因为互补PWM只能由高级定时器产生,STM32G070的高级定时器只有TIM1。//通道2 PWM占空比98%,通道2互补输出PWM占空比2%(PWM占空比100%=200)//通道3 PWM占空比50%,通道3互补输出PWM占空比50%1.使用高级定时器TIM1的通道2和通道3产生互补PWM。

2024-02-07 22:37:07 1516

原创 STM32串口通信过载溢出问题

然后,网上查资料,看到HAL库的接收中断里面有加锁、解锁操作,数据量大会导致串口锁死,进入串口接收中断函数,STM32Cube_FW_G0_V1.6.0版本里面没有加锁;3.定时500ms,检测几个串口的ORE是否置位,置位则清除ORE标志,重新打开中断,这个比较稳定靠谱一些,即使串口接收回调函数异常,也不影响清除ORE标志。用STMG070的4个串口中两个串口实时通信时,偶发某个串口通信挂掉,进入不了接收中断函数,但是能进入接收回调函数,另一个串口通信正常,其他程序正常运行?三种解决方案:(推荐第3种)

2023-11-22 23:28:04 1751 1

原创 C# 数据类型转换

1.byte[]转换为string。2.string转换为byte[]3.int转换为byte[]

2023-11-04 15:45:58 288

原创 STM32CubeMX配置-PWM(STM32G070)

【代码】STM32CubeMX配置-PWM(STM32G070)

2023-09-17 17:39:26 300

原创 STM32CubeMX配置-基本定时器TIM6(STM32G070)

通用定时器-TIM3, TIM14, TIM15, TIM16, TIM17。基本定时器-TIM6, TIM7。高级定时器-TIM1。

2023-09-17 17:19:12 763

原创 STM32CubeMX配置-串口配置(RCC,Manager配置)

生成代码默认不开中断,初始化时需打开中断,程序才会进入中断函数。如果要调用中断函数,初始化时需打开中断。4.工程配置 Project Manager。

2023-09-17 16:52:39 1448 1

原创 STM32CubeMX配置-ADC多通道配置(DMA) (STM32G070)

需手动开启ADC采集:HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&ADC1_Value,6);2)采用中断方式,ADC采集完成进入中断,中断关闭ADC采集,取数据之后再打开ADC采集。如果要控制轮询采样通道,设置Sequencer参数,Rank1,2,3即为采样通道顺序。二、配置RCC、SYS、时钟及Project Manager,生成代码。1)ADC轮询采集数据直接放到数组中;二、ADC多通道配置。

2023-09-10 16:33:10 1924 1

原创 断码屏显示

首先,通过点亮LCD确认S1是高4位,还是低4位,再确认是哪一位bit;SEG[1]~SEG[N]即为驱动对应的数组s[0]~s[n]数据,S1属于数组s[0],直接传参给TM1621接口,即可显示。2)找到该符号所在数组序号和位,显示的顺序即为SEG1~SEGN;数字变化0~9,数字取余填充到SEG对应数组中,即显示实时数据。1)根据编码图、数字字母序号及起始位;3)调用驱动接口推送显示数据。数字8显示字母序号(图2)驱动IC:TM1621。断码屏编码图(图1)举例:如何显示S1?

2023-09-10 15:46:43 661

原创 C# 多窗体共用一个串口

1.定义一个静态SerialPort1对象,初始化串口参数,不要用自带的SerialPort控件;//串口接收,可直接通过主窗体类名调用。2.把串口定义为一个类,其他窗体就可以直接调用。1.1 定义一个静态SerialPort1对象。1.2 初始化串口参数,注册串口接收事件。1.3 其他窗体调用。

2023-06-24 21:10:10 1655

原创 C# 串口升级简易版

发送文件时,显示进度条,当前进度条是计时的,待优化,实际应该根据文件的大小,显示进度条。2)制定升级协议,升级需要开始帧、结束校验帧、文件数据的校验等内容;3)发送文件加上起始帧、结束校验帧和升级文件校验,增加容错性;2)开始帧校验成功--->串口发送文件--->结束校验帧。1)第一步先能发送文件,并实现进度条功能;1)打开文件,文件路径显示在文本框。4)升级.bin文件测试。

2023-06-17 17:05:00 425

原创 C# Timer定时器事件

定义Timer事件,间隔100ms执行一次函数BmsDataAnalysis()。一、定义Timer事件。

2023-06-17 16:10:28 689

原创 C# 文本框显示数据

txtElectDirection.Text = "充电";1.文本框为string类型。如果是数据,需要转化为字符串。如果是字符串,可以直接赋值。

2023-06-17 16:02:33 1242

原创 C# 窗体切换、显示对话框(Form)

窗体切换用Panel,通过button1、button2、button3按钮控制切换显示不同的窗体界面。4.通过button2切换interverDisp界面。3.通过button1切换panelDisp界面。5.通过button3切换bmsDisp界面。一、在主窗体中完成不同窗体界面切换。2.主界面初始化要显示的窗体界面。

2023-06-10 18:00:22 1959

原创 C# CRC8、CRC16校验

一、校验封装到一个类。

2023-06-10 17:39:35 1434

原创 C# 串口收发数据

1.注册表中获取端口信息。

2023-06-06 22:51:34 3048

原创 freeRTOS与ucos II区别

3.feRTOs 可以有优先度一样的任务,这些务是按时间片来轮流处理,UCOSI 每个务都只有一个独一无二的优先级,因此,理论上进,freeRTOS 可以管理超过6个;1.比usOs简单,任务间通讯freeRTOS只支持Queque, Semmaphores,Mutex。除操作系统外,freeRTOS只支持TCPIP,UCOS则有大量外延支持,比如FS,USB,GUI,CAN等的支持。3.uCOS可靠性更高,而且耐优化,freeRTOS 在我设置成中等优化的时候,就会出问题。

2023-04-09 15:41:26 654

原创 软构件3-函数设计(输入,输出,状态) 伪代码

函数设计

2022-11-27 12:49:35 48

原创 MCU的电源IC引发ADC采集误差问题

MCU的电源IC误差,导致ADC产生误差

2022-10-13 16:01:06 557

原创 MCU模拟ADC芯片IIC通信

MCU IIC模拟从机通信

2022-10-12 11:10:20 1199

原创 ADS101x如何应用?

综合来说,也就是采集的最高电压是VDD 3.3v的一半,也就是最高采集到3.3V电压时,对用的ADC值是1650左右,根据公式Vadc=3.3/4.096*2048=1650。2)01:配置寄存器,关键地方是MUX:表示配置的通道,PGA:配置的FSR,和计算电压值、ADC值公式有关,采集的电压范围和VDD、FSR有关。1)单端模式采集的电压范围从VDD和+FSR中电压值低的那一个取的,也就是说如果VDD是3.3V,FSR配置的4.096V,那采集的电压范围就从3.3V那里取;我们配置的是001。

2022-10-11 21:35:17 818

空空如也

空空如也

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

TA关注的人

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