- 博客(37)
- 收藏
- 关注
原创 Linux驱动(六):Linux2.6驱动编写之平台设备总线
本文主要介绍了一下两种驱动编写方法:1.比较原始的设备端+驱动端编写方法。2.效率较高的设备树+驱动端编写方法。最后,使用LED闪烁实战验证了一下。
2024-09-10 16:57:11
1098
原创 Linux驱动(五):Linux2.6驱动编写之设备树
本文主要讲解了一下设备树的概念,编写语法规则,API函数和使用流程,最后使用LED灯闪烁,实战验证了一下。
2024-09-04 19:59:56
1770
原创 Linux驱动(四):Linux2.6字符设备驱动及GPIO子系统
主要内容就是搞了个Linux2.6字符设备驱动的编码框架,然后简单使用驱动代码编写了GPIO子系统,配置了一下两个LED灯io口,最后使用应用程编写代码调用底层驱动的API接口,使两个LED灯闪烁。
2024-09-03 20:05:07
1818
1
原创 Linux驱动(三):字符设备驱动之杂项
内核和网络设备驱动程序间的通信,完全不同于内核和字符以及块驱动程序之间的通信,内核调用一套和数据包相关的函数socket,也叫套接字。,除了块设备和网络设备,其他设备基本都是字符设备,我们常常写的驱动代码,也往往是字符设备。用于处理与内核不直接相关的设备或功能的驱动程序,适用于各种简单或虚拟设备的实现,并为开发者提供了一种简便的方式来处理字符设备。中都会被抽象成文件,所有对硬件设备的操作到应用层中,也都会被抽象成文件的操作,设备文件通常会被放在/dev目录下。每一个字符设备在应用层的抽象文件也被叫做。
2024-09-02 19:53:47
1450
原创 Linux驱动(一):环境搭建及介绍
自用自用自用,晚上睡觉前复盘用。当然,也欢迎大家参考指正。积极认错,坚决不该(bushi)。uboot 版本 — 2017.09 kernel 版本 — linux 5.10.110。
2024-08-30 17:56:08
1328
原创 喵喵蓝牙热敏打印机(下)
1.能够模拟作业帮旗下喵喵机的通信协议,通过手机app喵喵机(V6.2.80)进行蓝牙连接打印。2.能够通过图片取模打印图片。3.打印机进行打印时,LED灯快闪提示用户。打印完LED灯1s闪一次,提示用户打印机进入待机状态。4.能够进行缺纸检测,缺纸时会进行电机微动提示用户。5.能够进行电量检测并将结果发送给app端,能进行打印头温度检测,过热时自动停止加热并闪灯+电机微动。6.能够进行按键出纸,按下按键打印机能够自动出纸。
2024-08-12 10:40:11
2803
8
原创 喵喵蓝牙热敏打印机(上)
3.配置引脚模式,引脚5连接按键(BUTTON),为了能够检测该引脚的高低电平,将该引脚配置为输入模式。引脚18连接LED灯,为了能够输出高电平控制LED灯的亮灭,将该引脚配置为输出模式。2.定义LED_ON()为digitalWrite(LED, LOW),代表此时灯亮,定义LED_OFF()为digitalWrite(LED, HIGH),代表此时灯灭,方便后续操作。SPI 时钟引脚 (SCK)、SPI 从输入引脚 (MISO)、SPI 主输出引脚 (MOSI)、和 SPI 片选引脚 (SS)。
2024-08-11 19:59:23
3410
4
原创 STM32第二十三课:GUI-Guider安装使用及项目移植(7.11版本)
GUI-Guider就是一个LVGL界面辅助设计工具,通过GUI-Guider我们可以快速创建多个屏幕,导入多个字体,图片,图标等。
2024-07-28 17:21:25
4326
3
原创 STM32第二十二课:LVGL的移植和屏幕创建(7.11版本)
基于STM32和FreeRTOS系统的LVGL的移植,LVGL任务的创建和初始化,按键控制屏幕切换。
2024-07-28 11:51:45
3174
原创 STM32第二十一课:FreeRTOS事件组&软件定时器
如果 configTICK_TYPE_WIDTH_IN_BITS 设置为 TICK_TYPE_WIDTH_16_BITS,则事件组内实现的位数(或标志数)为 8;如果 configTICK_TYPE_WIDTH_IN_BITS 设置为 TICK_TYPE_WIDTH_32_BITS,则为 24;如果 configTICK_TYPE_WIDTH_IN_BITS 设置为 TICK_TYPE_WIDTH_64_BITS,则为 56。如果 configUSE_16_BIT_TICKS 设置为 0,则为 24。
2024-07-16 19:07:00
1325
原创 STM32第二十课:FreeRTOS任务管理和信号量
2.任务被执行时就会变为运行态时,该任务就会从就绪链表删除,若此时执行到任务中的vTaskDelay等函数时,该任务就会被挪到阻塞链表中。调度器此时会去执行其他任务。若解除任务的优先级很高,那么此时该任务会直接打断cpu正在执行的任务,抢占位置去执行自己。本质上就是一个钩子函数,在任务上下文切换的时候做检测,具有一定的滞后性,需要在任务发生上下文切换时才会进行,任务堆栈溢出时并不能马上检测到问题。二值信号量也一样,谁拥有谁执行,比如任务B需要获得信号量才能执行,那么他就要等待A给他一个信号量然后再去执行。
2024-07-15 10:26:04
1637
原创 STM32第十九课:FreeRTOS移植和使用
其中,FreeRTOSConfig.h 是直接从 demo 文件夹下面拷贝过来的,该头文件对裁剪整个FreeRTOS 所需的功能的宏均做了定义,有些宏定义被使能,有些宏定义被失能,一开始我们只需要配置最简单的功能即可。如果用户想要实现多个任务并行的效果,可以通过加入FreeRtos(嵌入式实时操作系统),操作系统可以让STM32实现任务的快速切换,从而给人一种。和裸机操作不同,操作系统中执行的是一个一个任务块,通过任务调度器(使用相关的调度算法)来决定当前时刻要执行哪个任务。
2024-07-14 15:19:11
2046
原创 STM32第十八课:SPI&Flash
一般能够支持SPI模式0的设备也支持SPI模式3,支持模式1的设备也支持模式2。一般的传输数据时候采用的就是8位进行,高位先传还是低位先传,传输的速度。3.循环往FLash发送数据(无所谓什么数据,只是为了置换出FLash状态寄存器的值),判断寄存器的第0位BUSY是否为0,为0时就代表Flash为空闲状态,可以执行其他操作。:判断接收缓冲器非空(RXNE)是否为0,为0表示接受缓冲区为空,没数据,此时持续等待数据到来。CPHA:时钟相位, CPHA=0时,在时钟的第一个边沿进行采样,第二个边沿进行输出。
2024-07-11 18:15:06
2302
原创 STM32第十七课:连接云平台进行数据传输
1.当代码将报文发送给串口3时,由于串口3连接的是wifi模块,此时就相当于将报文通过wifi模块传送到云端。2.将数据传输到串口1时,由于串口1连接的是电脑上,所以相当于将数据打印。
2024-07-07 10:51:21
3624
5
原创 STM32第十六课:WiFi模块的配置及应用
1.先看原理图,配串口,引脚和中断。2.根据发送逻辑进行中断函数的编写。3.在主函数中调用并按照需求进行实现。
2024-07-03 19:59:58
7468
2
原创 STM32第十五课:LCD屏幕及应用
液晶显示器,简称 LCD(Liquid Crystal Display),相对于上一代 CRT 显示器(阴极射线管显示器), LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备的显示器。参数:xy开始坐标,字符序号,大小(为了和汉字保持一致,我们这里用的都是16),最后的0为不加背景。最后就是图片的数组了,记得强转一下,以符合要求。参数:x,y开始坐标,字体背景颜色,字体颜色,转换后的字符串。
2024-07-02 20:12:24
2548
原创 STM32第十四课:低功耗模式和RTC实时时钟
进入停止模式后, STM32 的所有 I/O 都保持在停止前的状态,而当它被唤醒时, STM32 使用 HSI 作为系统时钟(8MHz)运行,由于系统时钟会影响很多外设的工作状态,所以一般我们在唤醒后会重新开启 HSE,把系统时钟设置回原来的状态。在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.8V 区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。时钟源的配置:1.打开LSE。
2024-07-01 19:58:29
2017
原创 STM32第十三课:DMA多通道采集光照烟雾
1.先开时钟,配置DMA。2.打开ADC1的两个通道(烟雾和光照),开启扫描和循环。3.使能DMA并开启ADC转换。4.数据处理及主函数调用。
2024-06-30 16:36:30
1574
原创 STM32第十一课:ADC采集光照
1.先看该光敏电阻的电路图,分析如何获取光照的数值。2.想到可以通过ADC转换得到光照的树数值,开始学习ADC的知识。3.先看ADC的功能描述,然后开时钟,分频,配IO。4.看手册中的ADC的控制寄存器,一个一个查看,看看究竟需要配置那些。5.看该引脚的ADC是那个通道的,开始配置通道。6.都配置完后进行复位校准和数据获取函数的编写。7.最后在主函数按照需求调用即可。
2024-06-28 22:29:34
3384
原创 STM32第十课:PWM波
1.先开时钟配置引脚。2.配置定时器的分频器,装载值和计数器,中央对齐模式和计数方向。3.接下来配置pwm的部分。先配置默认比较值,一般置为0,使占空比为0,不让引脚有效。4.配置输出模式(pwm)以及有效的电平是高还是低。5.开启通道,使pwm波通过引脚传输。6.定时器通道选择一下比较模式,为防止突变,再设置一下定时器和装载值的缓冲,最后使能计数器。
2024-06-27 18:51:43
2563
原创 STM32第九课:DHT11温湿度传感器
1.先根据原理图和该模块的手册,配置对应的时钟和io。2.进行数据读取,严格按照该模块手册中的时序一步一步来。3.最后进行数据处理并导入到语音模块。
2024-06-26 18:46:41
3836
原创 STM32第八课:Su-03t语音识别模块
将kqm处理后的数据进行外部声明,再判断头尾的固定值,查看是否有误,然后进行数据类型标志位判断,判断收到的指令要播报那个数据,最后记得释放结构体,防止重复播报。1.先去智能公元的官网设计所需的语音指令和接口,本例程选取的以串口5 PC12(TX)和PD2(RX)进行数据的通信。由于该串口接收的空气质量数据为double类型,二传输类型为8位2进制,所以此时需要进行数据转换。该处串口5的中断用来接收数据,并把数据传送给数组里,每十个为一组。2.清空板子上的代码,然后利用板子上的ch340进行烧录。
2024-06-25 20:45:14
3842
1
原创 STM32第七课:KQM6600空气质量传感器
1.学会了KQM6600空气质量传感器模块的接线和配置。2.学会了使用空闲中断,以及数据的获取与处理。
2024-06-24 20:27:07
2534
原创 STM32第四课:串口中断
1.学习了中断的各种理论,脑子里有了大致概念。2.学会了如何配置中断,能够自己配置简单的中断。3.能够将中断结合之前学过的知识进行综合应用。
2024-06-19 19:44:33
3546
原创 STM32第三课:串口调试
1.了解多种通信方式和作用。2.学会了如何在固件库中查找以及使用官方例程。3.学会了USART1的配置及使用,以后就可以对程序直接进行printf调试了。
2024-06-18 19:39:20
2683
原创 STM32第二课:库函数编程和按键消抖
1.了解了STM32各个开发模式的区别以及特点。2.学会了如何对STM32进行库函数开发。3.学会了如何对按键操作进行按键消抖。4.学会了如何通过异或操作进行器件反转。
2024-06-17 17:07:20
1642
原创 STM32第一课:按键控制LED灯和蜂鸣器
完全掌握了LED灯、按键和蜂鸣器模块。学习了STM32的工作原理,对STM32的开发流程较为熟悉。能够通过看数据手册和原理图进行一些简单模块的开发和使用。
2024-06-16 16:20:09
6663
原创 linux下C语言学习1
重命名编译:输入gcc xx.c -o xxx 就会生成一个为xxx的可执行文件。默认编译:直接输入 gcc xx.c 就会默认生成一个a.out的可执行文件。压缩指令:tar -cvf 要压缩的文件名.gz 压缩到哪里。相对路径:就是默认从当前所在的文件夹开始,你只管写后续的路径。在线安装 --sudo apt-get install。ls -a:查看当前目录下所有的(包括隐藏的)ls -l:查看当前目录下所有内容的详细信息。home:用户文件夹 --所谓的主目录。
2024-06-06 19:26:52
456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人