自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FreeRTOS移植STM32H750,keil

同时在port.c加入extern void Original_SysTick_Handler(void)后,加入Original_SysTick_Handler();将stm32h7xx_it.c中的systick_handler改成Original_SysTick_Handler。意思为不恰当链接,找到这两句,分别在task.c中和freertosconnfig.h中,注释掉,编译成功!然后将freertos的.c 文件,memmeng的heap_4.c,和port.c/.h加入工程。

2024-07-24 20:54:48 324

原创 基于STM32最小系统的多功能手表/时钟/万年历

接线:PA11为按键1,功能:切换界面;PB11为按键2,功能:修改小时、年份、秒表的开始和暂停;PB10为按键3,功能:修改分钟、月份、秒表清0;PB1为按键4,功能:修改时间的秒数(清0),日期。功能:模仿电子表进行设计,可以修改时间、年月日、秒表等功能,内有仿真、程序和接线图。基于STM32最小系统的多功能手表/时钟/万年历。程序有详细注释,仿真可直接运行。

2024-07-24 18:12:41 207

原创 ADC电压采集

ADC,即模数转换器,(DAC是数模转换),ADC是一种将模拟信号转换为数字信号的设备。它在现代电子系统中广泛应用,尤其是在需要将现实世界的模拟信号(如温度、电压、声音等)转换为可以由数字设备(如微控制器、计算机等)处理的数字信号的场景中。

2024-07-19 23:57:28 2419

原创 移植FreeRTOS于LPC54608芯片,IAR

然后去网上搜芯片型号,可知,lpc54608的架构是arm cortex M4,所以打开ARM_CM4F文件夹,将整个文件夹复制到工程FreeRTOS/portable中(我的项目中在freeRTOS中还新建了个IAR文件夹,然后将ARM_CM4F放入了portable/IAR中,其实没有必要 )然后添加头文件路径,主要是FreeRTos中的include,然后ARM_CM4F,不放心的话,新建的几个文件夹都可以加进去。然后我们回到源码文件夹,点开Source,确定好你用的是哪个IDe,我用的是IAR。

2024-07-19 16:51:47 1203

原创 imx6ull利用shell实现开机自启

假设要开机执行projectmax文件,目录为/home/root/project/projectmax ,打开。

2024-07-16 20:48:13 118

原创 imx6ull/linux应用编程学习(17)利用mqtt上传开发板数据,和控制开发板led(基于正点)

imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx-CSDN博客(1)用户可通过手机或电脑远程控制开发板上的一颗 LED 灯;(2) 开发板客户端每隔 30 秒向服务端发送 SoC 当前的温度值,用户通过手机或电脑可查看到该温度值首先我们需要先准备好这些:1.首先mqtt.fx连接上服务器2.准备好客户端id、用户名、用户名密码。目录结构为首先创建cmake文件夹、build文件夹、CMakeLists.txt、mqttClient.c文件CMakeLists.txt(

2024-07-11 02:39:02 1224

原创 imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx

1框内,第一行为之前记的四条信息中的连接地址,第二条为端口,第三条为客户端id,这个自己设记得这个客户端id需要在emqx进行授权,在上文中我已经进行授权了。选客户端授权,客户端id为你在mqtt.fx的客户端id,然后设置订阅主题,然后记得客户端id边上的用户名授权也加进去。在很多项目中都需要自己的私人服务器,以保证数据的隐私性,这里我用的是emqx。2框勾选,3框为ca证书的存放地址,你存哪儿就选择那个路径。emqx需要用户名密码,点添加,自己添加设置就行。进入界面后,记住这四条信息,很重要。

2024-07-10 21:49:21 403

原创 imx6ull/linux应用编程学习(15) 移植MQTT客户端库/测试

确保你的Ubuntu系统已经安装了必要的工具和依赖项。编译完成后,将生成的库文件和相关的头文件传输到开发板。

2024-07-09 22:11:04 334

原创 imx6ull/linux应用编程学习(14) MQTT基础知识

与HTTP 协议一样, MQTT 协议也是应用层协议工作在 TCP/IP 四层模型中的最上层(应用层)构建于 TCP/IP协议上。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用①、 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。②、基于 TCP/IP 提供网络连接。

2024-07-08 21:02:42 940

原创 imx6ull/linux应用编程学习(13) CMAKE

cmake 工具通过解析 CMakeLists.txt 自动帮我们生成 Makefile,可以实现跨平台的编译。

2024-07-08 18:48:26 858

原创 imx6ull/linux应用编程学习(12)CAN应用编程基础

关于裸机的can通信,会在其他文章发,这里主要讲讲linux上的can通信。与I2C,SPI等同步通讯方式不同,它有CAN_HIGH与CAN_LOW两条信号线组成。

2024-07-05 19:25:48 910

原创 imx6ull/linux应用编程学习(11)SOCKET

Socket是实现网络通信的基本单元,它提供了统一的接口,方便程序员使用TCP或UDP进行数据传输。通过选择不同类型的Socket,程序可以在可靠性、速度和资源利用之间进行权衡,以满足不同应用场景的需求。

2024-07-05 16:56:18 1268

原创 imx6ull/linux应用编程学习(10)网络基础知识(基于正点原子)

网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于 IPC 的一种,通常称为 socket IPC。大概可以分为三个层次,如下所示:(1)、硬件层:网卡设备,收发网络数据(2)、驱动层:网卡驱动(Linux 内核网卡驱动代码)(3)、应用层:上层应用程序(调用 socket 接口或更高级别接口实现网络相关应用程序)在硬件上,两台主机都提供了网卡设备,也就满足了进行网络通信最基本的要求,网卡设备是实现网络数据收发的硬件基础。并且通信的两台主机之间需要建立网络连接,

2024-07-04 21:13:15 818

原创 imx6ull/linux应用编程学习(9)串口应用编程

串口全称叫做串行接口,串行接口指的是数据一个一个的按顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口串口(UART)在嵌入式 Linux 系统中常作为系统的标准输入、输出设备, 系统运行过程产生的打印信息通过串口输出;同理,串口也作为系统的标准输入设备, 用户通过串口与 Linux 系统进行交互。所以串口在 Linux 系统就是一个终端, 提到串口, 就不得不引出“终端(Terminal)”这个概念了。

2024-07-04 15:15:39 1061

原创 imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)

下来需要导出 pwm,首先使用 access()函数判断 pwm0 目录是否存在,如果存在表示 pwm 已经导出,如果不存在,则表示未导出,那么就需要通过 export 文件将其导出。,前面提到,这块imx6ull的pwm1拿去用做控制lcd背光了,而其他几路没有pwm资源,所有测不了,如果要测试pwm需要去内核禁用io,太麻烦,所以不演示了。当使用完 PWM 之后,我们需要将导出的 PWM 删除,导出成功之后,接着配置 PWM 周期、占空比,最后使能 PWM。0 表示一个编号, 注意,

2024-07-03 20:03:00 981

原创 imx6ull/linux应用编程学习(7)在LCD上显示文字

在linux中,确实可以像裸机一样自己取模、自己写函数打点显示,但是效率很低,不能满足多文字显示,在Linux 系统中, 字体文件通常会放在/usr/share/fonts 目录下,有了字体文件之后,我们就不需要再对字符进行取模了,它们已经编码进了字体文件中,我们只需要解析字体文件、访问字体文件,从字体文件中读取出字符的位图数据即可。

2024-07-03 19:05:33 1024

原创 imx6ull/linux应用编程学习(6)jpeg和png的图片显示

JPEG 虽然是有损压缩,但这个损失的部分是人的视觉不容易察觉到的部分,它充分利用了人眼对计算机色彩中的高频信息部分不敏感的特点,来大大节省了需要处理的数据信息。当出厂系统原有的 libjpeg 库被删除后,将会导致开发板下次启动后, 出厂系统的 Qt GUI应用程序会出现一些问题,原本显示图片的位置变成了空白,显示不出来了!图像中保存的不再是各个像素的彩色信息,而是从图像中挑选出来的具有代表性的颜色编号,每一编号对应一种颜色, 图像的数据量也因此减少,这对彩色图像的传播非常有利。⑹、读取解码后的数据;

2024-06-30 20:33:59 957

原创 imx6ull/linux应用编程学习(5)FrameBuffer的应用编程

Frame 是帧的意思, buffer 是缓冲的意思,所以 Framebuffer 就是帧缓冲, 这意味着Framebuffer 就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种显示驱动接口,它将显示设备(譬如 LCD) 进行抽象、 屏蔽了不同显示设备硬件的实现,对应用层抽象为一块显示内存(显存),它允许上层应用程序直接对显示缓冲区进行读写操作,而用户不必关心物理显存的位置等具体细节,这些都由Framebuffer 设备驱动来完成。

2024-06-29 18:04:06 882

原创 stm32-hal库(5)--usart串口通信三种模式(主从通信)(关于通信失败和串口不断发送数据问题的解决)

USART的中断模式是一种数据传输方式,在这种模式下,当特定事件(如接收到一个字符或发送完一个字符)发生时,会触发中断请求,中断服务程序(ISR)负责处理这些事件。它允许数据在外设和内存之间直接传输,而不需要CPU的介入,从而减轻了CPU的负担,提高了数据传输的效率。接收中断函数,我这里将长度设为了1,表示接收到一个字节,便接收完毕,返回一个字节,比如0x11 是一个十六进制数,表示的是一个字节(8位)数据。2.轮询模式下,打开串口,其会不断给电脑串口发信息,直到几千几万条后溢出。

2024-06-28 23:31:57 2239

原创 STM32-hal库学习(4)--usart/uart通信 (单向通信)(同时显示在oled)

stm32-USART通信-CSDN博客STM32_hal库学习(3)-OLED显示-CSDN博客。

2024-06-27 23:45:13 967

原创 stm32-USART通信

全双工(Full Duplex):USART在全双工模式下,可以同时发送和接收数据。它通常使用两个独立的数据线:TX(发送)和RX(接收)。全双工通信提高了数据传输的效率,因为发送和接收操作不会互相阻塞。半双工(Half Duplex):虽然USART的硬件设计支持全双工,但它也可以配置为半双工模式。在半双工模式下,同一时间只能发送或接收数据,而不能同时进行。这种模式通常使用一根数据线(通常是TX/RX共用一根线),需要切换方向来发送或接收数据。单工(Simplex)

2024-06-27 15:42:47 1432

原创 imx6ull/linux应用编程学习(4)使用tslib库

什么是tslib库?tslib是专门为触摸屏设备所开发的 Linux 应用层函数库,它是触摸屏驱动和应用层之间的适配层。它把应用程序中读取触摸屏struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程进行了封装,向使用者提供了封装好的 API 接口。tslib 有一个配置文件ts.conf,该配置文件中提供了一些配置参数、用户可以对其进行修改。同时,其还可以为Qt提供触摸输入支持。接下来主要介绍如何使用 tslib 提供的 API 接口。

2024-06-27 01:20:31 1167

原创 STM32_hal库学习(3)-OLED显示

(我这个是上篇文章的图,所以2框写的还是key,名字自己随便写就行,偷懒~)

2024-06-26 03:07:59 1682 2

原创 stm32关于同时两个IIC总有一个失败的原因

有可能你是把PB7、PB6和PB8、PB9一起用了,stm32f103c8t6支持i2C1(PB6、7)和i2C2(PB10、11),而PB8和PB9则是IIC1的复用引脚,所以它们不能放在一起用。

2024-06-26 02:09:16 152

原创 stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料什么是IIC(i2C)通讯协议?关键字:SCL、SDA、半双工、同步、串行。IIC(Inter-Integrated Circuit),也称为I2C(Inter-Integrated Circuit),是一种由Philips公司(现为NXP)开发的用于在集成电路之间进行。IIC协议非常适合设备之间的和易于实现的特点。其中有几个问题:为什么是短距离?什么是串行总线?这个等学完概念后再进行解答。

2024-06-26 01:48:02 861

原创 imx6ull/linux应用编程学习(3) 输入设备应用编程(下)(触摸屏)

的取值范围, 可以看到使用该宏需要传入一个 abs 参数,该参数表示为一个 ABS_XXX 绝对位移事件,譬如 EVIOCGABS(ABS_MT_SLOT)表示获取触摸屏的 slot 信息,此时 ioctl()函数的第三个参数是一个 struct input_absinfo *的指针,指向一个 struct input_absinfo 对象,调用 ioctl()会将获取到的信息写入到struct input_absinfo 对象中。但从触摸点的生命周期来看, 它们是同一个触摸点吗?答案肯定不是,为啥呢?

2024-06-25 23:12:36 988

原创 imx6ull/linux应用编程学习(3) 输入设备应用编程(上)(按键)

以上列举的每一种事件类型中都包含了一系列具体事件, 譬如一个键盘上通常有很多按键, 譬如字母 A、 B、 C、 D 或者数字 1、 2、 3、 4 等, 而 code变量则告知应用程序是。type=1,说明是上报的是按键类事件EV_KEY(上面type介绍哪里有图),cpde=114 对应的是键盘上的 KEY_VOLUMEDOWN 按键,这儿开发板对应的是那个黄色按键。(type=1) 来说, 如果 code=2(键盘上的数字键 1,也就是 KEY_1), 那么如果 value 等于 1,则表示。

2024-06-25 20:12:22 1227

原创 STM32_hal库学习(2)-按键(中断/非中断)控制LED

在这篇文章我将使用两种方法实现按键控制,分别使用非中断控制和中断控制LED。

2024-06-24 17:45:32 1300

原创 GPIO的中断和事件触发模式:上升、下降沿触发.......

1. 上升沿触发外部中断(EXTI_RisingEdge)作用和原理作用:在引脚电平从低变高(上升沿)时触发中断。 原理:当GPIO引脚检测到从低电平(逻辑0)变为高电平(逻辑1)时,生成一个中断请求。 应用场景: 按键检测:检测按键被按下(假设按键按下时引脚电平由低变高)。 传感器信号:当传感器输出信号由低变高时,触发中断处理数据。 2. 下降沿触发中断(EXTI_FallingEdge)作用和原理作用:在引脚电平从高变低(下降沿)时触发中断。 原理:当GPIO引脚检测到从

2024-06-24 14:59:12 1167

原创 关于GPIO的上拉、下拉,无上下拉

1.GPIO_PULLUP(上拉)作用和原理作用:上拉模式会在GPIO引脚和电源电压(Vcc)之间连接一个内部上拉电阻。 原理:当引脚配置为输入模式时,如果引脚没有连接到其他外部电路,内部上拉电阻会将引脚的电压拉到高电平(逻辑1)。 应用场景: 按键:按键通常与地(GND)连接,在未按下时需要上拉电阻将引脚拉到高电平。当按键按下时,引脚被拉低到低电平(逻辑0)。 I2C总线:I2C通信需要数据线和时钟线有上拉电阻,以确保总线空闲时处于高电平 2.GPIO_PULLDOWN(下拉)

2024-06-24 11:08:09 2337

原创 stm32 No traget connected/debug识别不到串口的问题

关于stm32串口识别不到,第一步先确定是否线接错(stlink与stm32接口对应),如果确认接线没有问题的话,可以使用以下方法,成功率较高。打开stm32 ST-Link Utility,如果用stlink,这个软件会比较常用。当然这还没结束,我们得让它彻底能用2才行,接下来拔掉断掉stm32电源(拔掉stlink),然后重新插到电脑上。擦除成功就可以关掉啦,然后断开stm32电源,将stm32 boot0跳线帽换回去,换到0。连接成功后,点击Target->Erase Chip实现芯片擦除。

2024-06-24 09:48:36 548

原创 STM32F103—Hal库的学习(1)LED灯闪烁

然后按照顺序,1框可以选择MCU的各类外设资源,点击GPIO外设,因为我们前面设置了PC13,所以我们可以在这里看到PC13引脚的设置,4框可以设置其初始化,可以根据自己需要设置,我这里是设置了,开始低电平,输出模式,非上下拉,低速。5.工程设置:点击1框,2框为你的工程名,2框下半部分是储存路径,路径最好不要出现中文,不然容易生成失败,3框是你的ide,我的是keil5。之后编写程序,实现LED的闪烁,因为这个只是初始化程序,只能实现led灯亮。根据需要选择,我这里选择的是中间,直接打开工程。

2024-06-23 23:36:05 382

原创 imx6ull/linux应用编程学习(2)GPIO编程(下)

当 poll()函数返回时, revents 变量由 poll()函数内部进行设置,用于说明文件描述符 fd 发生了哪些事件(注意, poll()没有更改 events 变量) ,我们可以对 revents 进行检查,判断文件描述符 fd 发生了什么事件。当执行命令之后,我们可以使用杜邦线将 GPIO1_IO01 引脚连接到 GND 或 3.3V 电源引脚上,来回切换,使得 GPIO1_IO01 引脚的电平状态发生由高到低或由低到高的状态变化。的目的是将文件指针移动到文件的开头,以便重新读取文件内容。

2024-06-22 21:51:47 888

原创 imx6ull/linux应用编程学习(2)GPIO编程(上)

这是基于正点imx6ull开发板的linux应用编程开发,正如所言,其中开发板的驱动编程已经被编写好了。那么应用编程和驱动编程之间的关系和驱动是什么呢?对于一个系统,普通用户的程序肯定是不愿意随便一个程序直接影响到硬件的,其需要一个中介来联系应用层和硬件,而操作系统便是这个中介。而驱动程序根据硬件编写好了各种设备驱动文件,充当了硬件与应用软件中间的桥梁。而应用程序呢,则是调用已经编译好的设备驱动文件,去实现一个控制。应用编程学习主要是学习arm的linux应用层的应用开发。

2024-06-22 20:02:34 1120

原创 Linux环境变量 ${CC}的配置方法

在学习Linux的时候是不是觉得打交叉编译链太长太麻烦?这就体现了设置环境变量的重要性!在这篇文章,我主要写两种实现交叉编译环境变量的方法,设置两个变量并且去验证(当然前提是你得先下载号交叉编译工具链,然后把你的交叉编译工具链记下来,我的交叉编译链为arm-linux-gnueabihf-gcc,你之后把这个替换成你的工具链就行,操作流程一样)

2024-06-22 14:49:30 382

原创 imx6ull Linux C应用编程学习(1.2) LED点灯(代码理解)

其中if (0 > write(fd1, argv[2], strlen(argv[2]))) ,将第三个参数写入fd1,如果小于0,则代表写入失败。关于上面这段,其中fd1是open文件LED_TRIGGER的文件描述符,O_RDWR表示文件是读写模式,如果打开错误,其会传回负数。由之前可知,fd1文件代表的是触发模式,fd2代表的是亮度,不过开发板led是gpio控制,所以只有1和0亮灭两种形式。law模式实现前6秒每隔一秒灭一次,后7秒,以500ms频率闪烁,等时间到10s后退出程序。

2024-06-22 00:36:20 332

原创 imx6ull/linux应用编程学习(基于正点原子)(1)__LED点灯

当然这段代码每个人都不一样,具体意思为:scp -r book(你ubuntu的用户名)@192.168.5.12(地址,上面步骤应该有ping通):/home/book/project/APP/app/15_led(这部分是我文件在ubuntu的路径,当然你可以只传编译好的led文件) /home/root/app(这是你想存入的开发板路径,app是我自己创的一个路径)其中USB_TTL串口需要下载串口驱动,具体可在设备管理器查看,如图:端口列表会显示新增加的驱动。显示已经传入开发板,之后下载程序。

2024-06-21 22:31:08 294

原创 Error: L6218E: Undefined symbol HAL_UART_Init (referred from usart.o)问题

我这里只介绍这一种方法,多次发现,报错问题的路径均出自于usart.c的工程里,头文件,路径,工程项目均没有问题,那么就有可能是重定位问题,重命名等问题。尝试了网上很多方法,包括头文件包含,路径设置,工程管理的project item等,最终发现均没有问题。最近在移植程序时,发现keil报错,如何一直不能编译成功的问题,如图。后将include in Target Build 取消勾选。再次编译,成功解决问题,且下载后功能正常。

2024-06-14 22:52:10 642

原创 stm32 报错no target conneted解决方法

stm32最小系统在下载程序是一直报错:no target connected,试了很多办法成功不了,最后将芯片擦除了才成功。

2024-06-12 10:19:44 1100

stm32f103c8t6hal库的按键控制led(中断/非中断两种)

stm32f103c8t6hal库的按键控制led(中断/非中断两种)

2024-06-24

stm32的RTC的万年历实验

stm32的RTC的万年历实验

2024-06-18

mcuisp串口下载软件

mcuisp串口下载软件

2024-06-18

FLYMCU串口下载软件

FLYMCU串口下载软件

2024-06-18

基于stm32的PWM呼吸灯

基于stm32的PWM呼吸灯

2024-06-18

stm32f103串口发送+接收(基于江科大)

加了点备注

2024-06-18

空空如也

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

TA关注的人

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