自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【单片机】IIC需要注意什么(企业级回答)

1、逻辑分析仪分析,看看是否有应答以及对应的逻辑波形分析,确保通讯的协议,从机地址有没有写错。在没写错的前提下,观看有没有ACK应答,如果协议没错,但是ACK没应答,那大概率就是波形的问题。的问题 or 从机设备的问题,要看一下发生异常的波形点是在主机部分发生还是在从机发生,还是全部发生。1、从应用层来看,先看数据手册确定下手册中的从机地址指的是八位地址还是七位地址。2、如果有应答,但是在读写操作有问题,那考虑是不是要读写的寄存器不支持读or写。2、确定下要对应操作的读写的寄存器。

2024-12-21 15:57:33 543

原创 【网络编程】TCP和UDP

在我的理解,TCP 可以理解为是UDP的稳定版,面向的使用场景不同。TCP需要建立连接的过程,也就是所谓的, 而且有。UCP则不需要,直接发送即可。从以上也可以知道,TCP传输比较可靠,但是其应答机制就导致了他的 实时性不高, 使用不当的情况下容易造成阻塞;而UCP则只需要发送就好了,不管三七二十一, 所以实时性高,但是缺点就是容易造成丢包的过程,她不像TCP每次发送都有回应。以上就是最大的区别。

2024-12-10 10:25:09 258

原创 【Freertos】内存管理

还记得 Freertos的内存管理,我在面试的时候一直脑子死机,不知道要回答哪个方面!!!heap1 ~ heap5 : 主要分为5个内存管理的方法。分别从简单粗暴到精心规划。

2024-12-03 11:24:11 308

原创 【Linux】 基于tftp + nfs 挂载根文件系统在开发板失败

这正常是由于跟不匹配导致的, 自Ubuntu16.04 之后默认nfs只支持3和4 , 然而的支持是nfs协议2。解决办法:1、 自降 Ubuntu 版本到支持 nfs协议2 , 个人认为这是最傻瓜的办法2、 修改nfs的协议支持,使其支持nfs协议2 (本人是这样解决的)3、 到顶层Makefile 通过菜单配置nfs支持的协议版本,使之与Ubuntu的nfs支持匹配 (此方法只适用于部分支持的kernel)

2024-10-31 14:12:24 453

原创 【单片机】用mipi_dsi点亮屏幕,帧缓存写入失败原因

mipi协议的优点在于传输快,可以通过双边传输的,然后可以多组通讯线进行数据传输,也就是所谓的lane , 正常都是1组或者2组。其快速通讯和处理的功能主要用于显示界面UI的设计,也就是所谓的LVGL。但是其缺点也很明显,就在于没有内部内存。所以我们需要开辟自己的一个内存作为"中介"进行显示数据的存储。所以就用到帧缓存的写入。当然,帧缓存说到底也就是RGB的显示,正常分为RGB585,666,888。这个就要结合屏幕的显示寄存器看 ,还有一些是BGR的顺序。

2024-10-28 18:25:31 604

原创 【单片机】电池充放电 和 长按开关机的联系

原理很简单,我们产品的开关机键是用来做"开机关机判断的", 这个只需要低功耗模式的运行,结合外部中断的唤醒, 在按键 "开机” 之前, 虽然供电了,然后只需要配置好了开关机键的外部中断,然后进入超低功耗模式, 就约等于 机器关机啦。只有按键触发标志位更改,才唤醒进入运行状态。这也是充电的时候机器还能运行的原理~~~。当充电的时候机器运行后要关机,同样是外部中断进入,然后进行软件复位,外设关闭,就可以实现“充电中关机了”

2024-10-28 18:10:52 450

原创 【Freertos】单片机裸机开发和上操作系统的区别

然后上操作系统,如RTOS,就很好解决了这个问题,实际上操作系统就是关系到一个时间片和任务调度,我们可以把每一个要处理的内容放到一个任务里面,然后结合消息队列发送接收处理,进行多任务分割和进行、并行处理,其实也就类似为多个main函数可以调用,然后main函数还可以控制执行与否(是否挂起)。从stm32来讲,单片机裸机开发可以理解为单进程、单线程的开发,也就是只有一个main函数,然后系统就只需要运行main函数从头走到尾就可以了,期间还包括前后台的设计,如中断和中断处理。这往往加大了开发的难度。

2024-10-10 09:51:20 631

原创 【单片机】快速定位查找函数库

在我们keil5中左侧有一个Functions的按钮,按下就是各种路径中的文件,然后也是按照不同的模块封装好了的,这个时候我们就寻找对应的模块展开就可以了。如图,我们假设要找gpio的函数,这个时候张开就有全部的函数名字在这里啦,方便快速查找,找到对应的双击进去就跳转到对应的定义内容了。

2024-10-08 09:33:51 947

原创 【单片机】keil5安装(基于江科大手把手教学)

这是从江科大链接下载下来的资料包,线打开Keil5_MDK进行软件下载双击-->-->-->  把Core地址改在D盘,但是-->  接下来的这些随便写  -->进行下载 --> 安装-->finish, 这个时候keil5就下载完成了,接下来就要进行stm32环境的配置了。

2024-10-08 09:23:47 789

原创 【单片机】stm32的stlink烧录不进去总结

1.新手: 魔术棒的debug那里选错了,是stlink,点成其他烧录了。 2.芯片未激活:类似是属于低功耗的那种情况,最直接的方法是按住复位键,点击烧录,再松开复位键(超实用) 3.进入了低功耗模式或者烧录脚被关闭服用成GPIO脚了,方法如2. 4.接线问题 5.显示M3和M4的不匹配: 正常情况我遇到的是支持库的不同,如stm32f1的c8t6 ,和RCt6 , 一个支持库的后缀c8是 ld,  rc是md,只要在

2024-09-30 18:26:21 2501

原创 【单片机】ADC

ADC在我们日常中是比较常用的,最普通的不过于各种传感器的值的转换,在企业开发层面,更是用到ADC进行不同按键键值的读取。而不是常用的普通的IO口判断。ADC是作为外设用的,前面提到的判断按键,主要是其不占用CPU,可以大大节省功耗和主控的运行,其次,ADC是一个模数转换的过程,也就是把电压转化为数组,不同的开发板ADC支持的阈值范围不一样。大部分都是12位分辨率,也就是 2^12 = 4096 , 意思就是可以对支持的电压范围分为4096等份进行测量。

2024-09-30 18:06:11 671

原创 【C语言】volatile

volatile是起到防止优化在作用,直接说就是 ---> 原原本本按照代码的样子给机器。可能比较难理解,看下面:

2024-09-24 14:05:25 318 1

原创 【单片机】定时器--双边沿输入捕获计算占空比

双边沿输入捕获,主要是用于计算方波的占空比的,精度是相对比较高的,主要运用于蓝桥杯比赛中。双边沿顾名思义就是上升沿和下降沿。通过设置定时器双通道,在初始化配置为上升沿进入中断,然后读取定时器计数值,接着对计数值清零,然后再次开启定时器上升沿输入捕获。但是这样的前提是要滤掉第一个边缘,因为你没法初始就是从上升沿开始计数。滤过第一个之后,后面流程就是:上升沿---> 读取计数值--->计数值清零,重新开启定时器中断。这样的作用就是,计数值可以通过结合定时器的频率计算出这一方波的频率、周期。

2024-09-13 09:39:54 733

原创 【单片机】定时器 - pwm波输出

定时器PWM波的输出: 输出PWM波实际上可以理解为输出方波, 我们常用单片机代码设置只能设置高电平、低电平, 但是我们很难。然而单片机的pwm功能就实现了这个功能。

2024-09-11 14:40:49 871

原创 【单片机stm32】定时器 --普通定时

基本定时器: 在我的理解是只能用于普通的定时功能,也就是中断唤醒通用定时器 :可以用于pwm波的输出、占空比的输入捕获计算、双通道捕获高级定时器:可以用于互补输出pwm波形、带有刹车功能(学生期间正常很少用到)

2024-09-11 14:13:44 747

原创 【单片机stm32】外部中断EXTI

外部中断可以理解为IO口进行输入捕获外部设备电平,当IO口检测到电平符合设置 需求的时候,进入中断,执行中断回调函数。常用也是为按键的输入捕获,但是外部中断进行输入捕获远远比普通的按键轮询更加可靠,也更加精确。

2024-09-09 18:20:06 640

原创 【单片机】 GPIO不同模式

gpio就是我们控制的引脚,其功能大体上可以区分为输入和输出。

2024-09-09 18:08:23 545

原创 【C语言】几种循环的使用for() 、while()、do{}while()

这样循环,流程容易记乱,要注意!!--> 判断 ,走 {} a++写分号就是不设置的意思,如上第二,就是不赋值, 第三就是没条件,没赋值,相当于while(1){}

2024-08-30 17:17:10 356

原创 【C语言】引用头文件中 “ “ 和 < >的区别

例如 : 系统内部可调用库如: 等等。1.对于 " " 包含的,指的是先搜索用户自己创建的文件,再搜索系统内部可调用库。2.对于 < > 包含的, 是先搜索系统内部可调用库,再搜索用户自己创建的文件。2个的不同用法,指的是系统内部搜索文件的先后顺序不同。

2024-08-30 14:25:17 234

原创 【C语言】static关键字

1.声明在函数内: 修改生存周期。函数是在调用的时候申请内存,退出的时候释放内存,用static的时候,申请的内存是在全局区(静态区)。生命周期是变成了整个程序,程序关闭了才会释放内尺寸。2. 限制有效可使用范围,只能在当前文件下。

2024-08-30 14:07:16 187

原创 【C语言】sizeof和strlen

sizeof和strlen是面试官常问的点,非常重要!!

2024-08-30 11:14:14 211

原创 【C语言】#define和typedef

typedef 用于对不同的数据类型起别名#define 主要用于对一些代码的简洁找替代写法 以及让代码更直观。

2024-08-29 18:42:16 351

原创 【C语言】enum枚举

red;white;black;green;声明变量:enum color color1,color2,color3;

2024-08-29 11:59:43 252

原创 【C语言】union联合体

union 联合体占用内存的可复用的,变量之间内存共享,所以每次修改都会覆盖原来已有的变量。struct占用的内存是固定的,不同变量之间不会相互影响。

2024-08-29 10:41:33 168

原创 【C语言】结构体

这里只列举2种最常见的结构体写法如图可知:对于上面的结构体,是最最最普通的写法,声明也比较复杂,需要把前面的名字都打出来 : struct mystruct myone 代表了声明结构体,命名为myone对于下面的结构体,可以理解为重命名, 把 struct mystruct2 合并重命名简写为struct_2 , 这样就方便代码编写,也可以通过重命名更直接知道该结构体是做什么的。这是比较大部分的写法。

2024-08-29 00:39:50 362

原创 【C语言】进制之间的转换

·在计算机中,进制是我们最常见的。最主要是二进制、十进制、十六进制。不同的进制运用在不同领域,如下 :二进制: 只有0和1。可以理解为是计算机语言。我们写的代码在计算机转换到最后也只是010101的数字。可以理解为是进制中的底层。十进制: 0- 9。主要是跟我们人看数字相关。我们日常中说的就都是十进制的,但是在计算机中往往是编程写数值的时候才会用到。十六进制 :0 - F。这个在嵌入式领域是最常见的,也是必须要掌握的。我们的寄存器地址大部分就是用十六进制写的。

2024-08-29 00:01:46 323 1

空空如也

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

TA关注的人

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