自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于printf导致程序卡死的问题

如果printf在代码中参与编译了,即使没有执行,也会导致程序在debug时卡死。解决方法:重定向或者勾选use macrolib。

2025-05-14 21:09:04 560

原创 ch340n的坑

ch340n的v3引脚,如果悬空或接地就是匹配5伏电平,接3.3伏匹配3.3伏电平。

2025-04-08 00:39:00 181

原创 PMOS防反接电路

2025-03-26 18:13:52 315

原创 记录ota遇到的问题

1.stm32不同的型号每一个扇区的大小不一样,所以一次擦除的扇区的大小也不一样,flash小于等于128kb的一个扇区大小事1k,也就是1024字节,注意。第一部,修改引导程序烧录开始地址和程序大小,地址是flash的开始地址,大小可以弄个16k差不多,修改引导程序中断向量表,为0,默认值一般就是0。第三部,从引导程序的跳转到应用程序的地址要在应用程序的基础上加4字节,因为有4字节存放栈顶地址。第二部,修改应用程序的烧录开始地址,和程序大小,中断向量为应用程序开始地址。

2024-12-02 20:45:05 359

原创 汇编基础啊啊啊啊

2024-11-17 13:59:56 115

原创 链表的使用

1.分配一个内存p当做临时信息结构体,把p的信息存在head和tail中,当不断有新的链表插入时,我们需要不断的把tail下移,head保持不变。把新分配的内存p给tail的next,完成链表的延长。把tail下移,tail的下一个指向nall。

2024-11-02 17:02:58 178

原创 关于中断处理数据的问题

具体实现可以使用标志位判断,比如说中断接受到一个值,标志位置1,在主循环里判断标志位置1之后,读取数据,但是用来判断的标志位不也是全局变量吗,是的,但是一个布尔类型的全局变量的读写基本约等于原子操作,被中断打断的概率不大。用原子操作,说白了就是要在一个指令周期完成,因为一个指令周期没有执行完不会被中断打断,比如说32位单片机处理64位的数据的时候,可能就需要多个指令周期。如果需要在中断接受的数据很快,导致主循环来不及及时处理,那么就必须要用到缓冲区,串口接收到的数据存储在缓冲区中,主循环处理。

2024-11-01 16:44:37 292

原创 关于二维指针

/ 使用二维指针访问元素。// 只是一个例子数据。ptr2D[0][1]不就等于array1[1],也相当于引用了第一个地址下的内容。ptr2D[i]就相当于array1到array5,其实就是一个一维指针。// 释放每个一维数组。// 假设每个一维数组有10个整数(这只是一个例子)// 释放二维指针本身。// 访问并打印每个一维数组的内容。// 初始化二维指针。

2024-10-29 12:10:53 262

原创 【无标题】ram和rom

2024-09-26 16:36:23 153

原创 BSRR 只写寄存器理解

BSRR的初始值为0x00000000,当使用BSRR给引脚写入低16位(0x2000),此时就会写入0x00002000(将这个值写入IDR),随后BSRR又会变为0x00000000。当使用BSRR给引脚写入高16位(0x20000000),此时就会写入0x20000000(将这个值写入IDR),随后BSRR又会变为0x00000000。//给高16位写1 对寄存器高 16bit 写1。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。BSRR 只写寄存器。

2024-09-26 15:19:02 589

原创 记录GT911驱动不成功的问题

这两组地址可以通过刚刚上电后的RST引脚和INT引脚的时序时间决定,本人在对给的demo代码一顿裁剪后,驱动成功(这时候没有接INT引脚,可能瞎猫碰上死耗子),就以为INT引脚没有用!我操他妈,后来自己画了块板子,用原来的代码,莫名其妙的不好使了,遂开始为时两天的找bug之路,从硬件到软件我找呀找,甚至为了看通信波形,把示波器都tm掏出来了,怎么整也不好使,后来看芯片手册中对地址的这部分,豁然开朗,分享给大家。GT911的通信地址有两个,分别是0x28(写地址),0x29(读地址);

2024-09-23 19:11:12 681 1

原创 条件编译。。。。

2024-07-02 22:48:44 384

原创 寄存器位操作

反转某一位,按位异或,一样为0,不一样为1,所以和1异或就会导致取反,和0异或导致不变。把某一位赋值为1,一般用第二种,第一步把某一位清零,其他位不变,第二步赋值。

2024-07-02 22:28:12 213

原创 关于mos管防反接电路

nmos箭头向里,p向外,s极永远在箭头的尾端那一侧,体二极管nmos由s指向d,s接正极,d接负极可以直接导通,但是体二极管导通不代表mos导通,mos导通还是取决于珊极电压,如果此时mos也导通,会把体二极管旁路掉,如果体二极管一直导通会损坏mos。nmos的只要g珊极电压大于s极一定值,就能导通,这个导通是双向的。

2024-04-06 13:45:36 643 1

原创 如何向AD导入嘉立创原理图和封装库

7.打开ad,分别打开之前保存的原理图和pcb,分别点击设计,生成原理图库和pcb库。6.打开free cad,导入step文件,删掉底下的pcb,保存,全部默认。11.电机放置,放置3d体,并调整高度(红圈),结束。4.新建一个工程,在底下搜索复制好的元器件编号,放置。5.在pcb界面电机导出3D文件,全部默认step。10.在文件夹中打开刚刚安装好的pcb库。1.在立创上次找到器件,复制器件编号。8.生成好之后另存为到你想要的文件夹。3.分别导出原理图和pcb。9.把你另存好的库安装到ad。

2024-03-06 18:11:46 5908 1

原创 关于pid调节只用KP调节达不到目标值的分析

输出=KP*(目标输出-实际输出),在实际的控制中,我发现,kp取值为2时,目标速度给50,我的想法是实际速度应该达到50,但是实际速度远远小于50,后来分析,可能是因为存在静态误差的远因,另外这个框图本身就是一个负反馈的框图,净输入量=输入量(目标速度)-反馈量(实际速度),假设给50的目标速度,实际速度为50,那么A(放大倍数)就为1,引入负反馈后就会降低放大倍数A,实际输出自然会变小。微分kd=这一次误差-上一次误差,误差会越来越小,也就是说微分是个负值,会减小系统的超调。β的取值和位置式一样。

2024-01-22 16:05:02 3281

原创 指针函数和函数指针

比如我有一个函数,我可以把这个函数的地址赋值给指针(函数名就是函数的地址),前提是指针要和函数是同一个类型的。这是函数指针,定义了一个指针,名字叫p,函数类型的,下面是省略写法。常用场景:在一个函数中调用另一个未知的函数,多用于多小组分工协作。这是指针函数,返回值是指针,也就是地址。

2024-01-01 16:53:41 415 1

原创 在.h文件中定义变量注意的问题

为什么不同的.c文件可以引用声明呢,却不能重复引用定义呢,首先要明白一点,所谓的#include xxx.h 的本质就是将xxx.h的文件中的所有内容复制一份到.c文件中,在工程编译的最后阶段,会把所有的.c文件合并成一个hex文件,如果不同的.c文件有相同的定义,就会报错(比如两个.c都引用了同一个定义过变量的.h文件),声明就不会。其实.h文件里头的所有函数声明前面都有extern,只不过被省略了,你多个.c文件可以引用函数,当然也能引用代extern的变量啦。

2024-01-01 15:41:13 1408 2

原创 sizeof用法

sizeof(name)=5,因为如果计算字符串长度,会加上'\0'sizeof(name)=4,因为sizeof计算类型长度。

2023-08-14 14:13:19 75

空空如也

空空如也

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

TA关注的人

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