- 博客(24)
- 收藏
- 关注
原创 C语言之内存对齐
在计算结构体的大小时,规则起着重要作用。不同的数据类型在内存中可能需要按照特定的地址对齐方式来存储,这样可以提高访问速度。但是,通过指令,可以改变默认的对齐方式。我们分别讨论两种情况下的大小。
2024-09-21 14:25:34 564
原创 信号处理之中值滤波
首先,选择一个窗口大小(通常为奇数),然后将这个窗口在信号或图像上逐个滑动。对于每个窗口,取其中的所有数值,按大小排序,并选择排序后的中间值(即中值)来替代窗口中心的值。窗口滑动后重复此过程,直到处理完所有数据点或像素。这样可以有效去除尖峰噪声,同时保留数据的主要趋势和边缘特征。
2024-09-21 13:02:49 425
原创 stm32中利用TIM+DMA+DAC产生10kHz正弦波
设置定时器定时周期,时间到了定时器就溢出(称为定时器更新事件),就会立马把一个数据传输到DAC,因此传输一个点的时间为Tupdate,而一个正弦波是由50个点组成,输出50个点需要的时间为Tupdate*50,这个时间就等于。定时周期:Tupdate= T1*(ARR+1) //计数计到ARR+1后溢出。//打开DAC的通道1。选择触发源为更新时间触发(定时器溢出),定时时间到了以后就会输出触发信号。实验可知:32个数据点就可以得到一个完整的波形,这里选择50个;
2024-09-08 20:07:51 384
原创 IIC(I2C)通信协议的两根总线为什么配置为开漏而不是推挽输出?
IIC协议中,所有从设备连接到同一根SDA和SCL。如果用推挽输出,当两个设备一个输出低电平一个输出高电平时,相当于电源直接和地连接,会发生短路。而开漏输出只有NMOS管,只能输出低电平,不会短路;需要外加上拉电阻输出高电平,因此默认状态下SDA和SCL都是高电平;
2024-09-02 22:19:39 611
原创 一文搞懂STM32所有GPIO输入、输出模式(推挽输出、开漏输出、上拉输入、浮空输入等)
开漏输出有两种输出状态:低电平高阻态在开漏输出模式下,PMOS一直处于关断状态,只需要关注NMOS管;(1) 当NMOS导通时,IO口接地,对外输出低电平:(2)当NMOS也关断时,IO口什么都没接,即单片机输出高阻态此时外设相当于接了个寂寞,也可以说是开路:这样看来好像开漏输出没什么用,只能输出低电平,不能输出高电平。但在某些场景下开漏输出很有用,例如I2C通信协议中,作为SCL和SDA的GPIO口设置必须设置为开漏模式。
2024-09-02 21:09:47 2378
原创 操作系统中多进程、多线程和多任务三者的区别
进程可以看成一栋栋房子,每栋房子都是铜墙铁壁,相互隔离。房子之间的通信需要管道通信、消息队列、共享内存等进程间通信方式实现;每个房子里面有很多人,每个人看成一个线程,负责不同的任务,例如做饭和洗衣;同一栋房子里的人共享房子里的资源,这对应着同一个进程里面的多个线程可以共享进程的资源;
2024-09-01 20:24:11 518
原创 I2C通信协议详解
I2C是由Philips公司开发的一种通用数据总线;拥有1根SCL时钟线,1根SDA数据线;因此是通信协议;I2C采样主从架构,通常有一个主设备和多个从设备,且每个从设备都有一个唯一的地址(地址一般为7位或10位);
2024-08-30 13:30:17 565
原创 sizeof和strlen
sizeof是关键字也是操作符,但不是函数!!!用于一个对象或者类型占用的sizeof(p)psizeof(p)*ppppchar **pp'a'1. 由于a是一个包含 5 个int元素的数组,而每个int在大多数系统中占用 4 个字节;2. *a表示对数组a的第一个元素进行。对于数组a来说,*a是a[0]。a[0]是一个int类型的元素。因此,sizeof(*a)实际上是,即单个整数的大小。在大多数系统中,也是 4 字节。
2024-08-29 17:03:08 230
原创 volatile关键字 用途
但如果flag是volatile修饰的变量,编译器会知道它的值可能在任何时候被外部改变,所以每次访问flag时,编译器都会重新从内存中读取最新的值(传感器最新状态),而不是使用寄存器中缓存的旧值。如果flag是一个普通的int变量,编译器可能认为flag的值不会变,编译时会把它的值缓存在寄存器中来提高访问速度。这时候传感器的状态即使发生变化,程序读取到了仍是原来的值。告诉编译器某个变量的值可能会在程序的执行过程中发生变化,要求编译器不要优化该变量。
2024-08-29 16:21:08 206
原创 Static 关键字 的定义和用途
static修饰局部变量:改变了局部变量的生命周期,出了作用域不被销毁,继续存在内存中,下次执行还是这个值; static修饰全局变量:使其只在本文件有效,跨文件不可访问,extern也不行; static修饰函数:称为静态函数,使得函数只在本文件有效,其他文件不可见。不用担心对其他文件的同名函数有干扰,是一种函数的保护机制。
2024-08-29 15:51:32 136
原创 进程和线程的区别
则像是住在这座房子里的“居民”。一座房子(进程)里可以有很多个居民(线程)。由于他们生活在一起,沟通(线程间通信)也比较方便,就像在一个屋子里说话一样,不需要额外的工具。但是,因为他们共享资源,如果一个居民(线程)在厨房打翻了油罐,其他人也会受到影响(一个线程的问题可能影响整个进程)。想象成一座“房子”。在操作系统中,进程就像是一座独立的房子,每个房子都有自己的地盘(内存)、自己的物资(资源),例如电力、家具(文件、设备等)。但是,房子(进程)之间要“通信”就会比较麻烦,得用电话(IPC机制)等手段。
2024-08-29 15:39:35 162
原创 系统存储器(RAM)和flash存储器、ROM什么区别
性质系统存储器(RAM):易失性,断电后数据丢失。FLASH存储器:非易失性,断电后数据不丢失。用途系统存储器(RAM):用于存储运行时的数据和变量。FLASH存储器:用于存储程序代码和长期数据。读写速度系统存储器(RAM):读写速度快。FLASH存储器:读取速度快,但写入速度相对较慢。数据保持系统存储器(RAM):数据在掉电后会丢失。FLASH存储器:数据在掉电后保持不变。擦写限制系统存储器(RAM):无擦写限制。FLASH存储器:有一定的擦写次数限制。
2024-08-29 09:30:39 758
原创 PN结介绍
是半导体器件中的基本结构,是由和相结合形成的结。它是二极管、三极管等半导体器件的核心部分。要理解PN结的概念,首先需要了解什么是P型和N型半导体。
2024-08-29 09:25:09 343
原创 排查单片机问题
在给已经焊接好的 STM32 板子烧入代码后,如果电源灯正常亮,但其他内部外设(如 GPIO 输出、电机、LED 灯、显示屏等)不正常工作,可能有多种原因导致问题。
2024-08-28 22:48:27 661
原创 freertos不同任务间怎么传输数据
主要包括队列(Queue)、信号量(Semaphore)、互斥量(Mutex)、事件组(Event Groups)、和消息缓冲区(Message Buffer)等。
2024-08-28 22:28:17 251
原创 中断进行的流程
中断机制允许系统在处理不同优先级的任务时更加高效。通过中断,处理器可以及时响应外部设备或异常事件,从而提高系统的实时性和响应速度。中断处理的关键步骤包括检测中断、保存上下文、查找 ISR、执行 ISR、清除中断信号以及恢复上下文。这样,中断处理过程结束后,系统能够无缝恢复原来的任务执行。
2024-08-28 22:19:01 357
原创 C语言 字符串反转
/这里sizeof(str)=60,表示最多读取59个字符,和一个字符串终止符'\0'下面的程序表示最多读取59个字符,和一个字符串终止符'\0',若用户输入字符数超过59,只读取前59个,超过的部分将留在缓冲区;利用fgets代替scanf来获得用户输入,避免缓冲区溢出;利用fgets代替scanf来获得用户输入,避免缓冲区溢出;fgets函数可以指定读取的长度,
2024-08-28 21:33:32 146
原创 strlen和sizeof区别
**`sizeof`** 用于获取数据类型或变量的**内存大小**。- **`strlen`** 用于获取字符串的**实际长度**(不包括终止符 `'\0'`)。- 使用`sizeof`时要注意它返回的是**数组总大小**,而`strlen`返回的是**字符串的长度**。- 在字符串操作中,`strlen`是更常用的,因为它计算的是字符串的有效字符数,而不是整个数组的大小。
2024-08-28 20:43:07 739
原创 野指针介绍
野指针是指向无效内存位置的指针,可能会引发严重的程序错误。通过正确初始化指针、在释放内存后设置指针为`NULL`、避免返回局部变量的指针等措施,可以有效地避免和处理野指针问题。
2024-08-28 20:37:10 913
原创 VMware安装ubuntu小白教程
设置大小,点击下一步。可以设置大一点,并不会占用那么多。点击内存,设置内存为电脑运行内存的一半,或者更低。后面的步骤如图片,没有特别说明的就是直接下一步。我的电脑16g,可以设置8g,也可以设置为4g.3.选择一个版本,随后选择下图的iso文件下载。2.下载ubuntu,用镜像下载,比在官网快。随后回到主界面,打开Ubuntu。另外,可以设置一下免密码登录,参考。1.下载vmware.
2024-08-13 18:53:17 229
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人