自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 定时器PWM输出

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的的技术。高级控制定时器 (TIM1 和 TIM8) 和通用定时器在基本定时器的基础上引入了外部引脚,可以实现输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车 (断路) 功能,这些功能都是针对工业电机控制方面。主要常用的输入捕获和输出比较功能。

2023-11-01 16:46:24 822

原创 stm32 定时器中断

当 APB1 的预分频器系数≥2 分频时,这个倍频 器系 数就 为 2, 即定 时器的 时钟 频率 等于 APB1 总 线时 钟频 率的 两倍,一般设置 APB1 总线时钟频率为 36M, APB1 总线的预分频器分频系数是 2,所以挂载在 APB1 总线的定时器时钟频率为 72Mhz。当使用外部时钟模式 1 的时候,时钟信号来自于定时器的输入通道,总共有 4 个,分别为 TI1/2/3/4,即 TIMx_CH1/2/3/4。预分频器 PSC,有一个输入时钟 CK_PSC 和一个输出时钟 CK_CNT。

2023-11-01 16:45:57 985

原创 stm32 ADC

自然界的信号几乎都是模拟信号,比如光亮、温度、压力、声音,而为了方便存储、处理,计算机里面都是数字的 0/1 信号,将模拟信号(连续信号)转换为数字信号(离散信号)的器件就叫模数转换器(Analogto-Digital Converter, ADC)按原理可分为:并行比较型 A/D 转换器(FLASH ADC)、逐次比较型 A/D 转换器(SAR ADC)和双积分式 A/D转换器(Double Integral ADC)。A/D转换过程通常为4步:采样、保持、量化和编码。

2023-11-01 16:45:07 696

原创 stm32 DMA

CPU根据代码内容执行指令,这些众多指令中,有的用于计算、有的用于控制程序、有的用于转移数据等。其中转移数据的指令,尤其是转移大量数据,会占用大量CPU。如果是把外设A的数据,传给外设B,这种情况其实不需要CPU一直参与,只需在A、 B之间创建个通道,让它们自己传输即可。DMA(Direct Memory Access)直接内存访问,可以大大减轻CPU工作量。这就DMA设计的目的,减少大量数据转移指令消耗CPU, DMA专注数据转移, CPU专注计算、控制。

2023-11-01 16:44:26 558

原创 stm32 模拟spi

SPI( Serial Peripheral Interface, 串行外设接口)是一种全双工同步串行通信接口,它用于MCU与各种外围设备以串行方式进行通信以交换信息,通信速度最高可达25MHz以上。SPI 总线具有三种传输方式:全双工、单工以及半双工传输方式。

2023-11-01 16:43:47 2035

原创 stm32 模拟I2C

一个 I2C 总线两条线组成,一个双向串行数据线SDA用来表示数据,一个串行时钟线SCL用于数据收发同步“总线”指多个设备共用的信号线,在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线每个连接到总线的设备(主、从机)都有一个独立的地址,主机可通过该地址来访问不同设备。

2023-11-01 16:43:02 608

原创 stm32 串口

USART)通用同步/异步收发器。USART是STM32内部集成的硬件外设,STM32F103系列最多有3个通用同步异步收发器(USART), 2个通用异步收发器( UART)。USART和UART的主要区别在于, USART支持同步通信,该模式有一根时钟线提供时钟。串口在嵌入式中经常使用,一般使用UART就足够了比如发送一字节数据“ A”?“A”的ASCII值是0x41, 二进制就是01000001。事先双方约定好波特率、数据格式,如115200,数据位是8,停止位是1,不设校验位和流控。

2023-11-01 16:41:52 144

原创 stm32中断

什么是中断?正常情况下,微处理器根据代码内容,按顺序执行指令。执行过程中,如果遇到其它紧急的事件需要处理,则先暂停当前任务,执行紧急事件,待紧急事件处理完后,再恢复到刚才暂停的地方继续执行。这个产生的紧急事件就叫做中断或异常通常把CPU内部产生的紧急事件叫做异常,来自CPU外部的片上外设产生的紧急事件叫做中断,异常和中断的效果基本一致,都是暂停当前任务,优先执行紧急事件,因此一般将中断和异常统称为中断图一如果两个中断同时发生,应该先执行哪个中断任务?

2023-11-01 16:41:06 155

原创 启动文件和链接文件

常用处理的启动文件和链接文件

2023-06-04 11:41:26 218 1

原创 守护进程(精灵进程)

但守护进程能突破这种限制,它脱离终端并且在后台运行)。守护进程(Daemon) 也称为精灵进程,是运行在后台的一种特殊进程,通常运行在操作系统启动时就开始运行,并一直在后台运行,直到系统关闭或它被停止为止(普通进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但守护进程不受用户登录注销的影响,它们将会一直运行着、直到系统关机)。守护进程 Daemon,通常简称为 d,一般进程名后面带有 d 就表示它是一个守护进程;表示该进程没有控制终端,也就是守护进程。特点:长期运行、与控制终端脱离。

2023-06-02 09:23:11 698

原创 makefile

—这篇文章主要是记录常用的。

2023-06-02 09:20:56 756

原创 Linux socket聊天室

socket与多线程

2023-04-07 12:05:55 2125 5

原创 c语言通讯录软件项目(cmake)

c、cmake、链表

2023-03-31 20:35:38 956

原创 简用CMake

在实际的项目中, 一个工程中可能包含几十、成百甚至上千个源文件, 这些源文件按照其类型、功能、模块分别放置在不同的目录中;面对这样的一个工程,通常会使用 make 工具进行管理、编译, make 工具依赖于 Makefile 文件,通过 Makefile 文件来定义整个工程的编译规则,使用 make 工具来解析 Makefile 所定义的编译规则。

2023-03-26 22:45:22 982

原创 socket编程

套接字(socket)是 Linux 下的一种进程间通信机制(socket IPC),使用 socket IPC 可以使得在不同主机上的应用程序之间进行通信(网络通信),当然也可以是同一台主机上的不同应用程序。socket IPC 通常使用(客户端<--->服务器)这种模式完成通信,多个客户端可以同时连接到服务器中,与服务器之间完成数据交互。socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口。在设计模式中,

2023-03-26 16:55:40 775

原创 线程的同步

对于一个单线程进程来说,它不需要处理线程同步的问题,所以线程同步是在多线程环境下可能需要注意的一个问题。线程的主要优势在于,资源的共享性,譬如通过全局变量来实现信息共享,不过这种便捷的共享是有代价的,那就是多个线程并发访问共享数据所导致的数据不一致的问题。线程同步是为了对共享资源的访问进行保护。这里说的共享资源指的是多个线程都会进行访问的资源,譬如定义了一个全局变量 a,线程 1 访问了变量 a、同样在线程 2 中也访问了变量 a,那么此时变量 a 就是多个线程间的共享资源,大家都要访问它。

2023-03-24 20:54:56 771

原创 同步与互斥之信号量

信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当信号量值大于 0 时,则可以访问,否则将阻塞。信号量是一种用于控制进程或线程同步和互斥的机制。它通常由一个计数器和一组等待的进程或线程组成。当进程或线程需要访问共享资源时,它会尝试获取一个信号量。如果信号量的计数器大于0,则进程或线程可以获得信号量并继续执行。否则,进程或线程将被阻塞,直到有信号量可用。PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V 操作使信号量加1。

2023-03-24 20:53:31 1683

原创 进程间通信

进程间通信(interprocess communication,简称 IPC) 指两个进程之间的通信。系统中的每一个进程都有各自的地址空间,并且相互独立、隔离, 每个进程都处于自己的地址空间中。所以同一个进程的不同模块(譬如不同的函数)之间进行通信都是相对简单的,譬如使用全局变量等但是,两个不同的进程之间要进行通信通常是比较难的,因为这两个进程处于不同的地址空间中;通常情况下,大部分的程序是不要考虑进程间通信的,对于一些复杂、大型的应用程序,则会根据实际需要将其设计成多进程程序。

2023-03-24 20:52:41 1110

原创 exec 族函数

当子进程的工作不再是运行父进程的代码段,而是运行另一个新程序的代码,那么这个时候子进程可以通过 exec 函数来实现运行另一个新的程序。为什么需要在子进程中执行新程序?虽然可以直接在子进程分支编写子进程需要运行的代码,但是不够灵活,扩展性不够好,直接将子进程需要运行的代码单独放在一个可执行文件中更好吗, 所以就出现了 exec 操作。

2023-03-24 20:51:41 1254

原创 线程与子线程

线程是参与系统调度的最小单位。它被包含在进程之中, 是进程中的实际运行单位。一个线程指的是进程中一个单一顺序的控制流(或者说是执行路线、执行流), 一个进程中可以创建多个线程, 多个线程实现并发运行, 每个线程执行不同的任务。譬如某应用程序设计了两个需要并发运行的任务 task1 和 task2,可将两个不同的任务分别放置在两个线程中当启动应用程序后,系统就创建了一个进程,可以认为进程仅仅是一个容器, 它包含了线程运行所需的数据结构、环境变量等信息。

2023-03-24 20:51:32 1740

原创 进程与子进程

事实上,子进程是父进程的一个副本, 譬如子进程拷贝了父进程的数据段、堆、栈以及继承了父进程打开的文件描述符,父进程与子进程并不共享这些存储空间,这是子进程对父进程相应部分存储空间的完全复制,执行 fork()之后,每个进程均可修改各自的栈数据以及堆段中的变量,而并不影响另一个进程。在 Linux 系统当中,所有的孤儿进程都自动成为 init 进程(进程号为 1)的子进程, 换言之,某一子进程的父进程结束后,该子进程调用 getppid()将返回 1, init 进程变成了孤儿进程的“养父”

2023-03-24 20:50:45 775

原创 信号与信号集

sigsuspend()函数会将参数 mask 所指向的信号集来替换进程的信号掩码,也就是将进程的信号掩码设置为参数 mask 所指向的信号集,然后挂起进程,直到捕获到信号被唤醒(如果捕获的信号是 mask 信号集中的成员,将不会唤醒、继续挂起) 、并从信号处理函数返回,一旦从信号处理函数返回, sigsuspend()会将进程的信号掩码恢复成调用前的值。那么就是通过信号掩码来实现, 如果进程接收到了信号掩码中的这些信号,那么这个信号将会被阻塞暂时不能得到处理,直到这些信号从进程的信号掩码中移除。

2023-03-24 20:49:49 1120

原创 标准I/O

利用fopen/fwrite/fclose/fprintf函数实现文件内容复制。

2023-03-24 20:48:11 484

原创 文件I/O

下面编写一个文件内容复制的程序,对read、write、open、close、lseek、fprintf、strerror、exit函数的综合使用。

2023-03-24 20:47:32 366

原创 看门狗应用

看门狗实验

2023-03-17 23:17:42 1775

原创 PWM应用

pwm应用

2023-03-17 23:16:17 745

原创 UART使用

uart的操作

2023-03-17 23:15:12 2142

原创 输入设备之触摸屏

读取多点触摸信息

2023-03-17 23:13:29 2646 2

原创 GPIO应用

应用层操作gpio的输出输入与中断

2023-03-17 23:10:59 2175

原创 输入设备之按键(键盘)

操控开发板按键或外接键盘

2023-03-17 23:09:59 852

原创 点亮LED

应用层控制LED灯

2023-03-17 23:07:56 543

原创 开发板与ubantu文件传送

开发板通过一根网线与ubantu系统连接后传送文件

2023-03-17 23:07:18 1772

原创 应用开发的基本知识

设备驱动框架、标准接口与非标准接口,应用层对底层硬件进行操控方式

2023-03-17 23:07:16 696

原创 Regmap API 实验

Regmap API 使用

2023-03-10 20:32:11 1224

原创 体验Linux 块设备驱动实验(模拟块)

用内存来模拟一个块设备进行驱动

2023-03-09 19:41:25 1263

原创 体验Linux USB 驱动

体验usb驱动

2023-03-07 21:47:39 2577

原创 体验 Linux 音频驱动

移植alsa-lib 和 alsa-utils 体验音频驱动

2023-03-06 23:47:29 3021 2

原创 Linux RS232驱动实验

RS232\458与GPS外设使用,ncurses和minicom移植

2023-03-05 10:33:15 2795

原创 Linux SPI 驱动实验

Linux SPI 驱动实验

2023-03-04 20:00:47 3432

原创 Linux I2C 驱动实验

Linux I2C 驱动

2023-03-03 12:16:55 2775

c语言实现通讯录管理软件(源码)

cmake构建编译

2023-03-31

空空如也

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

TA关注的人

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