- 博客(73)
- 收藏
- 关注
原创 Linux使用单总线驱动DS18b20
单总线:串行模式,一条线,包括,根据设备地址,像IIC一样可实现。常见引脚:三根线,信号线,vcc,GND。:9到12bit分辨率,对应数据后小数点的后1到4位,即最高精确到后四位小数。分辨率越高,采集数据所需要的时间越长。
2024-05-05 13:25:09 401
原创 typedef声明函数指针
使用 typedef 定义函数指针,代码看起来更简洁,也更不容易出错。其次,当函数指针作为其它函数的参数,特别是作为返回值时,直接使用的函数指针无法编译。(int char float),然后可以用该类型去定义需要的变量(int a;定义函数指针:不同于普通的函数声明,使用typedef来修饰,会声明一个。
2024-08-06 11:43:03 229
原创 03嵌入式Linux
GPIO即通用输入输出端口,作用是采集外部器件信息,控制器件活动。特点:有8种输入输出模型,其中推挽输出可以输出高电平低电平,开漏输出输出低电平;可以快速翻转;每个IO都可用作中断。引脚复用功能,将GPIO引脚用作其他外设的输入输出端口,如ADC SPI IIC TIM USART等。
2024-05-06 21:51:48 273
原创 02嵌入式Linux
封装是将数据和操作数据的方法(即函数)封装在一起,形成一个完整的、相互依赖的单元。通过封装,对象的内部细节被隐藏起来,外部只能通过对象所提供的接口来访问和操作对象的状态。封装提供了良好的抽象屏障,使得对象的内部实现细节对外部是透明的,从而降低了系统的耦合度,提高了代码的可维护性和可重用性。继承是一种机制,通过它一个类(称为子类或派生类)可以从另一个类(称为父类或基类)继承属性和方法。子类可以直接访问父类中的非私有成员(即公有成员和受保护成员),并且可以扩展或修改父类的行为。
2024-05-06 21:49:05 636
原创 01嵌入式Linux
缓存存储了最近访问过的数据或指令的副本,当需要再次访问这些数据或指令时,可以直接从缓存中获取,而无需再次访问慢速的主存或磁盘。检查程序代码中的I2C通信部分,确保使用正确的I2C库函数、正确的寄存器配置和正确的通信协议。通过减少CPU等待主存或I/O设备的时间,缓存可以提高CPU的利用率,使CPU能够更有效地执行指令,从而提高系统的性能。缓存还可以提高系统的响应速度,因为它可以存储一些预先计算好的结果或常用的数据,使系统能够更快地响应用户的请求或操作。逐个排查连接的I2C设备,确认每个设备的工作状态。
2024-05-06 21:46:40 741
原创 C语言中的goto语句
C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。根据设备的注册情况,在不同错误下,跳转到不同的。标签的用法和变量定义一样,常用字母开头,加上。使其往下依次释放掉注册的设备或驱动。
2024-05-04 21:00:48 730
原创 00嵌入式Linux
内存泄露一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定)内存块,使用完后必须显式释放的内存。应用程序般使用malloc,、realloc、 new等函数从堆中分配到块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。简单地说就是申请了一块内存空间,使用完毕后没有释放掉。 它的一般表现方式是程序运行时间越长,占用内存越多,最终用尽全部内存,整个系统崩溃。由程序申请的
2024-05-03 19:41:41 728
原创 QT的TcpServer
newConnection_Slot: 当有客户端的socket建立连接时,tcpserver会发送newConnection()信号,触发连接槽函数,用于创建一个新的socket与客户端对接。
2024-05-03 19:27:21 1492 2
原创 STM32F103(Cubemx)驱动ST7789
中景园电子的标准库使用SPI驱动ST7789的TFT_LCD彩屏,将标准库修改为HAL库使用。
2024-04-30 19:11:25 538
原创 RTT-线程通信:邮箱
创建邮箱对象时会先从对象管理器中分配一个邮箱对象,然后给邮箱动态分配一块内存空间用来存放邮件,这块内存的大小等于邮件大小(4 字节)与邮箱容量的乘积,接着初始化接收邮件数目和发送邮件在邮箱中的偏移量。接收邮件时,接收者需指定接收邮件的邮箱句柄,并指定接收到的邮件存放位置以及最多能够等待的超时时间。删除邮箱时,如果有线程被挂起在该邮箱对象上,内核先唤醒挂起在该邮箱上的所有线程(线程返回值是 -RT_ERROR),然后再释放邮箱使用的内存,最后删除邮箱对象。多个线程能够向同一个邮箱发送邮件和从中接收邮件。
2024-04-22 21:12:24 576 1
原创 STM32定时器编码器模式
short的表示范围(-32768-32767),也就是说当读出来的值为(32767, 32768, 32769,…把寄存器的值读出来了之后,转换成了short型(2字节,32位系统下),范围为(-32768-32767),此时当我们把计数器的初始值设置为0之后,如果出现反转,它就会从0开始向下计数(0,65535,65534,…0x0000-1=0xFFFF,同样是0xFFFF,对于32位来说,最高位为0,表示为正数,对于16位来说最高位为1,表示为负数,且刚好为-1。做强制类型转换:正反转问题。
2024-04-22 16:50:51 444
原创 STM32的定时器中断Cubemx
16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值触发DAC的同步电路 注:此项是TIM6/7独有功能.位于APB1总线上16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值4 个独立通道(TIMx_CH1~4)可以用作:测量输入信号的脉冲长度( 输入捕获)输出比较单脉冲模式输出PWM输出(边缘或中间对齐模式)
2024-04-03 10:33:50 1237
原创 strlen与sizeof区别
大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度。当适用了于一个结构类型时或变量, sizeof 返回实际的大小,当适用一静态地空间数组, sizeof 归还全部数组的尺寸。sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址。
2024-04-02 16:50:06 179
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人