- 博客(23)
- 收藏
- 关注
原创 chrdevbase驱动之Makefile优化(指定路径复制、删除文件)
对于学习嵌入式linux驱动篇的chrdevbase虚拟设备驱动时,需要将chrdevbase.c编译成.ko文件,应用层程序里需要把chrdevbaseAPP编译成chrdevbaseAPP可执行文件,此外还需要将生成的*.ko *APP文件拷贝至指定目录下,每次修改或者编译代码时,都需要输入一定量的命令行代码,对于时间有一定的浪费,于是想着使用Makefile或者shell脚本节约一点时间。以下两种方式都可以实现指定文件夹的文件删除操作;
2024-11-08 19:17:09
304
原创 IMX6ULL之使用汇编操作GPIO
类比于其他的MCU或者微处理器来说,首先学习的是操作GPIO点亮一颗LED灯。通过观察原理图找到与LED灯相关的GPIO口,通过控制GPIO的高低电平即可控制LED的亮灭。只需要该IO口输出低电平即可。硬件连接。
2024-10-23 17:42:20
808
原创 linux环境下C程序的编译过程以及makefile的简单使用
在windows下,很多用来进行编程软件对于写好的文件,点击编译即可生成想要文件。如.exe可执行文件,.hex文件或者.bin文件等等。软件为我们省略了很多事。但是对于linux初学者来说,初次接触linux系统,面对命令行黑框框有点无从下手,也不明白linux下C程序不用可视化编译器如何对程序进行编译,生成可执行文件。
2024-10-20 16:05:27
1955
2
原创 C语言双向链表操作
char *name;int age;char *name;/* A班 */首先定义个一个node_t的结构体,结构体中包含两个节点,struct node_t *pre;表示上一个节点,struct node_t *next;表示下一个节点。创建的person结构体包含person的名字、年龄以及节点。list链表包含了链表的名字以及头结点。
2024-10-12 18:17:30
754
原创 手把手操作STM32移植FreeRTOS
从解压的文件夹中FreeRTOSV8.23->FreeRTOS->Source中复制Source里的所有文件,并把这些文件粘贴到刚刚创建的FreeRTOS(上一步创建的)文件夹中。其中FreeRTOSConfig.h文件,在之前解压文件中的Demo->CORTEX_STM32F103_Keil中。从官网下载FreeRTOS的源码,建议下载带.exe后缀的文件包,文件小下载速度快。对该移植的FreeRTOS工程文件进行验证。在工程中创建文件夹,并按照图示添加文件。选择添加的头文件的路径如下图所示。
2024-09-28 20:40:35
2889
3
原创 STM32串口中断不定长数据接收(HAL库)
因为需要接收的数据为字符串数据,且有固定的结束符 \r\n,因此就打算使用串口中断,检测接收到的字符串是否含有结束符标志。如果串口接收到的数据不是\r或者\n,说明数据接受的是有效数据。使用开源的串口助手,在发送区随意输入一大串字符串,并使用定时发送进行验证,设置100ms进行定时发送,并自动发送换行符。经验证,发送数据为6565,接收数据也为6565。因此可以看到数据并没有丢失。由于最近在学习过程中需要使用不定长接收字符串数据,从网上看到的资料大多数是使用空闲中断+DMA传输的、环形缓冲队列等方法。
2024-09-24 19:42:41
547
原创 ..\MQTTClient\mqttclient\mqttclient.c(1076): warning: #68-D: integer conversion resulted in a chang
找到了这变量,原来是将MQTT_MEM_NOT_ENOUGH_ERROR定义为了-0x0003,符号的冲突。于是我们再次跳转 MQTT_MEM_NOT_ENOUGH_ERROR这个变量,看看如何定义的。将鼠标点击这个函数,按F12进行函数跳转看看里面函数是怎么定义的。这个函数只是重定义了一下return 看起来也没啥问题。今天移植MQTT驱动程序的时候遇到了这个不常见的警告。报的警告是 整数转换导致符号更改。
2024-09-23 20:55:53
245
原创 通信协议之UART串口通信(HAL库)
在嵌入式开发中,常见的通信协议有UART、I2C、SPI、CAN、USB等等,这些通信协议各有各的特点,依据他们的特性跟使用场景被运用在各个地方。本文主要学习的是串口通信。串口通信,即串行通信,是一种在设备间进行数据传输的通信方式。在串口通信中,数据按位顺序传输,这种传输方式占用引脚资源少,但相对于并行通信而言,其传输速度较慢。串口通信的外围电路比较简单,只需要将设备1的发送端TXD与设备2的接收端RXD,以及设备2的发送端RXD与设备1的接收端TXD相连接。
2024-09-10 16:34:02
931
1
原创 通信协议之软件模拟SPI读写W25Qxx(HAL库)
W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景。存储介质:Nor Flash(闪存)时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容量(24位地址):这里HOLD、WP引脚分别是保持引脚和写保护引脚。当管脚电平为低电平时有效,如WP为低电平时,W25QXX为写保护。不能通过SPI对W25QXX进行数据写操作。这里电路设计将HOLD与写保护置为高电平失能。
2024-09-06 13:56:39
1379
1
原创 通信协议之软件模拟SPI通信(HAL库)
SPI(Serial Peripheral Interface,串行外围设备接口)通信协议是一种由Motorola公司首先在其MC68HCXX系列处理器上定义的同步通信协议。该协议广泛应用于MCU、存储芯片、AD转换器和LCD等之间的数据交互。
2024-09-06 10:50:51
1974
5
原创 通信协议之软件模拟IIC通信
AT24C02的外围电路比较简单,IIC通信部分用两个上拉电阻与VCC相连即可。A0~A2为地址选择位。电路直接将A0~A2接地,即器件地址为1010 0000 (0xA0);
2024-09-04 15:54:43
838
原创 基于STC89C52RC控制舵机MG946R(按键控制正反转)
由于最近放假闲置在家,有空闲时间做自己想做的小玩意。就想着在家做点小玩意玩。放假从学校带了一些模块回来,有ESP-8266WiFi模块,HC-05蓝牙模块,RFID-RC522射频模块,JQ8900语音模块,8欧1W喇叭,51开发板,STM32F103ZET6核心板,STM32F407ZGT6核心板,0.96寸OLED IIC屏幕...看着这些外设和开发板,脑子里当时就想着做一个基于51单片机的智能播报门禁系统,本文介绍的是舵机的控制,后续会继续更新这个Demo的各个部分.......
2023-11-24 17:05:42
1485
1
原创 基于51单片机的TLC549数字电压表(数码管显示)
基于51单片机的TLC549数字电压表(数码管显示)由最近,需要用到TLC549芯片。于是就用该芯片做了一个简易的数字电压表;代码如下#include<reg52.h>#include<intrins.h>#define uchar unsigned char #define uint unsigned int void delay(uchar ms); //延时函数uchar TLC549_ADC(void); //TLC549模数转换s
2023-11-24 17:01:07
881
3
原创 Syntax error in library definition file “D:\ADS2019\learning\FILTER_wrk\lib.defs“.The lib.defs pars
ADS遇到的问题Syntax error in library definition file "D:\ADS2019\learning\FILTER_wrk\lib.defs".The lib.defs parser encountered an error in library definition file D:\ADS2019\learning\FILTER_wrk\lib.defs, at line 5: 3509 Cannot read the INCLUDE file: C:\Users\
2023-11-22 18:15:30
2120
1
原创 如何高效学习
最近周末在bilibili上刷到了一个名为“想要更有效率地学习?神经科学家提出了6个关键要素”的视频,里面介绍了如何学习,以及学习六个很重要的要素。
2023-11-19 11:54:18
55
原创 如何使用立创EDA专业版画原理图和封装
最近几天事情忙的差不多了,闲下来能有时间做点自己的东西了,于是想着用前面一段时间在京东白嫖的TEA5767 FM收音机模块做点小玩意。遂开始画电路图,在构建原理图的过程中发现该器件找不到合适的原理图及封装,习惯了拿来主义的我有点不适应。但是项目还得做,遂打算自己画个封装。
2023-11-17 22:31:00
11398
1
原创 关于Makefile的学习
Makefile规则一个简单的Makefile文件包含一系列的“规则”,其样式如下:目标(target)...依赖(prerequiries)<tab>命令(command)目标(target)通常是要生成的文件的名称,可以是可执行文件或OBJ文件,也可以是一个执行的动作名称,诸如`clean’。依赖是用来产生目标的材料(比如源文件),一个目标经常有几个依赖。命令是生成目标时执行的动作,一个规则可以含有几个命令,每个命令占一行。目标 :依赖1 依赖2 ...当.
2022-02-05 00:14:43
967
原创 将字符串转换成数字的方法------Integer.parseInt
Integer.parseInt();函数,可以将数字字符串转换为数字。具体用法如下:package shiyanyi;public class shiyanyi { public static void main(String[] args) { String s="123"; int num=Integer.parseInt(s); System.out.println(num); }}运行结果:123当需要将一串数字字符串转换为数字时,可以搭配
2021-10-21 16:43:23
3268
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人