- 博客(29)
- 资源 (7)
- 收藏
- 关注
原创 【STM32F4教程】第六节:通用定时器之PWM实现呼吸灯
Conceit is the quicksand of success. 自负是成功的流沙。PWM实现呼吸灯PWM概述相关概念PWM设置流程呼吸灯实现例程pwm.cmain.cPWM概述 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、...
2020-08-15 16:38:27
4048
2
原创 【STM32F4教程】第五节:通用定时器之精准延时
A strong man will struggle with the storms of fate.(Thomas Addison) 强者能同命运的风暴抗争。(爱迪生)通用定时器之精准延时通用定时器概述STM32定时器分类TIM2 到 TIM5 主要特性TIM9 到 TIM14 通用定时器具有以下特性:通用定时器的应用:通用定时器的计数模式:定时器的时钟来源有 4 个:定时器中断的配置定时器时钟实现例程tim.cmain.c通用定时器...
2020-08-15 16:22:20
2774
1
原创 【STM32F4教程】第四节:SysTick之延时
Cease to struggle and you cease to live.(Thomas Carlyle) 生命不止,奋斗不息。(卡莱尔)SysTick之延时Systick寄存器一共4个Systick寄存器SysTick控制和状态寄存器---------CTRLSysTick重装载数值寄存器- LOADSysTick当前值寄存器- VALSysTick定时器框架分析固件库中的Systick相关函数:Systick中断服务函数:延迟实现de...
2020-08-15 16:08:42
1429
原创 【STM32F4教程】第三节:外部中断(EXTI)的实现
There is no disputing about tastes. 人各有所好外部中断(EXTI)的实现中断概述EXTI外部中断触发机制外部中断~中断线的映射NVICNVIC 特性嵌套向量中断控制器 NVIC 包含以下特性:中断管理抢占优先级 & 响应优先级区别:NVIC中断优先级分组按键中断实现实现步骤按键中断实现例程exti.cmain.c中断概述 CPU执行程序时,由于发生了某种随机的事件(外...
2020-08-15 15:57:48
3679
1
原创 【STM32F4教程】第二节:GPIO之按键
You can't judge a tree by its bark. 人不可貌相按键按键库函数开发理解按键输入原理图获取按键输入步骤GPIO-KEY按键实现例程key.cmain.c按键库函数开发按键库开发要添加库文件:stm32f4xx_gpio.c理解按键输入原理图按键S1连接PA0,当按键S1按下时,PA0为低电平当按键S1未按下时,PA0为高电平获取按键输入步骤1、打开GPIOA组时钟,也叫做使能A组时钟(STM32当中.
2020-08-15 15:39:23
1754
原创 【STM32F4教程】第一节:GPIO之实现流水灯
The world is his who enjoys it.活着感到快乐,世界就属于你实现流水灯引言LED库开发理解LED灯原理图点灯步骤GPIO-LED点灯实现例程led.cmian.c引言长话短说今天开始STM32的学习,本阶段的知识是基于ST公司的标准库函的开发:Keil.STM32F4xx_DFP.1.0.8.pack。所需要的硬件设备:STM32F407ZET6开发板、J-LINK下载器 软件:keil v5, 安装软件和工程搭建就不多..
2020-08-15 15:32:23
4272
2
原创 【linux网络编程学习笔记】第九节:UDP组播的实现
Nurture passes nature. 教养胜过天性UDP组播的实现何为UDP广播网络地址组播发送步骤组播接收步骤完整例程:udp_add_multi_read.cudp_write.c何为UDP广播 单播方式只能发给一个接收方,广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。 组播(又称为多播)是一种折中的方式。只有加入某个多播组的主机才能收到数据。组播方式既可以发给多个主机,又...
2020-08-09 10:49:27
580
原创 【linux网络编程学习笔记】第八节:UDP广播的实现
Where there is life, there is hope. 有生命必有希望UDP广播的实现何为UDP广播广播地址广播发送步骤完整例程:udp_broadcase.c完整例程:udp_read.c何为UDP广播 前面章节介绍的数据包发送方式只有一个接受方,称为单播,如果同时发给局域网中的所有主机,称为广播。注意,只有用户数据报(使用UDP协议)套接字才能广播。广播地址 广播UDP与单播UDP的区别就是IP地址不同...
2020-08-09 10:44:44
378
原创 【linux网络编程学习笔记】第七节:TCP select多路复用IO实现群聊功能(select 多路复用、FD_SET、FD_CLR 、FD_ZERO、FD_ISSET)
The first wealth is health .(Ralph Waldo Emerson , American thinker) 健康是人生第一财富。(美国思想家 爱默生。 R. W.)TCP select多路复用IO复用实现群聊功能为何需要多路复用selent多路复用APIselect 多路复用设置文件描述符select群聊功能实现主要步骤1、初始化要监控的文件描述符2、判断是否有期望的事件发生TCP服务器例程 tcp_server...
2020-08-08 16:49:19
689
原创 【linux网络编程学习笔记】第六节:TCP线程多路并发实现群聊功能
Enrich your life today,. yesterday is history.tomorrow is mystery 充实今朝,昨日已成过去,明天充满神奇TCP线程多路并发实现群聊功能实现步骤1、实现TCP_server与TCP_client的双向通信2、初始化一条单向链表2.1、定义链表的结点2.2、链表操作函数2.4、新建客户端结点,插入链表3、接受客户端请求,创建线程监听3.1、接受客户端请求3.2、线程转发客户的信息TCP服务器例程.
2020-08-08 15:40:59
677
原创 【linux网络编程学习笔记】第五节:socket网络属性设置选项(getsockopt、setsockopt、解决错误:Address already in use)
At twenty years of age , the will reigns; at thirty , the wit ; and at forty , the judgment .(Benjamin Franklin ,American president) 二十岁时起支配作用的是意志,三十岁时是机智,四十岁时是判断。(美国总统 富兰克林 . B.)socket网络属性设置选项网络信息检索函数socket网络属性设置socket属性设置APIgetsockopt 读取套..
2020-08-08 15:29:40
679
原创 【linux网络编程学习笔记】第四节:创建UDP通信(双向)(sendto、recvfrom、inet_aton、inet_ntoa、inet_addr、inet_pton、inet_ntop...)
Nurture passes nature. 教养胜过天性 udp的双向通信和TCP的大同小异,都是通过多线程进行收发,不同的就是本次例程只写了一份代码,如果在同一台虚拟机上跑一定要区分端口号。直接上例程udp_rdwr.c#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <net...
2020-08-08 10:24:23
394
原创 【linux网络编程学习笔记】第三节:创建UDP通信(单向)(sendto、recvfrom、inet_aton、inet_ntoa、inet_addr、inet_pton、inet_ntop...)
Where there is life, there is hope. 有生命必有希望创建UDP通信(单向)UDP(用户数据报协议)建立UDP通信的流程步骤TCP相关APIrecvfrom() 接收数据inet_aton 字符串IP地址转换网络序列IP地址inet_ntoa 网络序列IP地址转换字符串IP地址inet_addr 主机地址转换成网络字节顺序的二进制数据inet_pton() 转换为二进制地址inet_ntop() 转换为文本地址hto...
2020-08-08 10:20:29
570
原创 【linux网络编程学习笔记】第二节:创建TCP通信(双向)(socket、bind、listen、accept、connect、recv、send、shutdown、server\client)
Work won't kill but worry will. 劳动无害,忧愁伤身。上一篇章中创建了TCP的客户端的服务器,但是只能单向发送,本章节主要讲解如何进行双向互发消息,实现的过程很简单,看过上一阶段的章节就不难发现可以使用线程可,进行一遍发送一遍接收。 废话不多说直接上例程TCP相关API说明点击跳转线程相关说明点击跳转tcp_server.c 服务端#include <stdio.h>#include <sys/types.h>...
2020-08-07 17:30:51
517
原创 【linux网络编程学习笔记】第一节:创建TCP通信(单向)(socket、bind、listen、accept、connect、recv、send、shutdown、server\client)
You make the failure complete when you stop trying. 当你停止尝试的时候,你就完全失败了。创建TCP通信(单向)引言套接字socketTCP(即传输控制协议)建立TCP通信的流程步骤TCP相关APIsocket() 创建套接字bind() 绑定套接字与网络地址listen() 监听套接字accept() 等待连接请求connect() 申请连接recv() 接收数据send() 发...
2020-08-07 17:15:01
762
原创 【linux系统编程学习笔记】第十三节:线程的安全机制3(条件变量)(pthread_cond_wait、pthread_cond_signal、pthread_cond_broadcast)
条件变量概念: 专门为了互斥锁而诞生的辅助工具,条件变量是一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足。条件变量上的基本操作有:触发条件(当条件变为 true 时);等待条件,挂起线程直到其他线程触发条件。条件变量APIpthread_cond_init 初始化一个条件变量pthread_cond_destroy 销毁一个条件变量#include <pthread.h> int pthread_cond_i...
2020-07-27 19:21:32
713
原创 【linux系统编程学习笔记】第十二节:线程的安全机制2(读写锁)(pthread_rwlock_rdlock、pthread_rwlock_wrlock、pthread_rwlock_unlock)
线程的安全机制——读写锁读写锁读写锁APIpthread_rwlock_init 初始化读写锁pthread_rwlock_destroy 销毁读写锁pthread_rwlock_rdlock 上读锁pthread_rwlock_wrlock 上写锁pthread_rwlock_unlock 解锁(读锁写锁一样)例程:读写锁概念: 互斥锁与读写锁的区别就是,互斥锁不够人性化。给资源加锁的初衷就是自己操作时不会被其他线程修改,但是但多数...
2020-07-27 19:15:48
822
原创 【linux系统编程学习笔记】第十一节:线程的安全机制1(互斥锁)(pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_init )
互斥锁安全机制互斥锁互斥锁APIpthread_mutex_init 初始化互斥锁pthread_mutex_lock 上锁pthread_mutex_trylock 尝试上锁pthread_mutex_unlock 解锁pthread_mutex_destroy 销毁互斥锁例程:安全机制 由于线程它是共享进程里面所有的资源,自然包括虚拟内存里面的所有东西包(包含全局变量,堆内存,映射的内存及程序段落等),同时也继承了进程的所有资源...
2020-07-27 19:09:06
1078
原创 【linux系统编程学习笔记】第十节:线程的取消机制(杀死线程)(pthread_cancel 取消线程、pthread_cleanup_push 、pthread_cleanup_pop)
取消机制——杀死线程线程的取消机制概念取消机制相关APIpthread_cancel 取消线程pthread_setcancelstate 设置线程的取消状态pthread_setcanceltype 设置线程相应取消命令方式线程取消机制的完善完善取消机制相关APIpthread_cleanup_push 注册线程退出处理函数pthread_cleanup_pop 清除注册的退出处理函数线程的取消机制概念 所谓先线程的取消机制就是...
2020-07-27 19:00:30
726
原创 【linux系统编程学习笔记】第九节:线程的属性设置—线程优先级(pthread_attr_setinheritsched调度策,pthread_attr_setschedparam设置静态优先级)
线程优先级属性线程优先级属性pthread_attr_setinheritsched 设置线程是否继承父线程调度策略pthread_attr_setschedpolicy 设置线程的调度策略pthread_attr_setschedparam 设置静态优先级获取静态优先级的最小值与最大值的函数例程:测试分离属性以及栈大小例程:测试优先级线程优先级属性在任务的概念当中由于运行的需求,我们常常需要给任务一定分类,在系统里面就诞生出来所谓线程优先级 实时线程...
2020-07-27 18:41:55
6070
1
原创 【linux系统编程学习笔记】第九节:线程的属性设置1(pthread_attr_setdetachstate、pthread_t pthread_self、pthread_attr_getdeta)
线程的属性初始化 线程的属性有很多,本文主要讲解几个常用的重要属性如何设置,如果想要设置线程属性功能,就必须诞生一个线程的属性结构体变量(pthread_attr_t),并且用pthread_attr_init去初始化这个变量,当用完之后用线程的pthread_attr_destroy去销毁掉线程的属性结构体。线程属性结构体:typedef struct{ int detachstate; //线程的分离状态 int schedpolicy; ...
2020-07-27 18:28:39
1052
原创 【linux系统编程学习笔记】第八节:线程初认识(pthread_create 线程创建、pthread_join 线程回收、pthread_exit 线程退出)
线程初认识线程的基本概念线程特点及APIpthread_create 线程创建pthread_join 线程回收pthread_exit 线程退出例程:线程的基本概念 线程实际上是应用层的概念,一个进程内部的多条线程共享了大部分资源,但是还是有一些信息是各自独立的一一比如其运行状态,当一个线程处于睡眠的时候,另一条线程可以正在运行,而或许有些线程已经变成僵尸了!就像一个人是如果是多线程的,他就可以做到一边睡觉一边吃饭一边在洗澡!正是利用线程状态独立的特征,程...
2020-07-27 17:21:03
1850
原创 【linux系统编程学习笔记】第七节:进程通信方式之IPC通信机制3(信号量)
Linux中用到的信号量有3种:ststem-V信号量、POSIX有名信号量和POSIX无名信号量(本文主要讲解ststem-V信号量)。他们虽然有很多显著不同的地方,但是最基本的功能室一致的:用来表征一种资源的数量,当多个进程或者线程争夺这些稀缺资源的时候,信号量用来保证他们合理地、秩序地使用这些资源,而不会陷入逻辑谬误之中。system-V的信号量并不是单个的值,而是一组(事实上是一个数组)信号量元素构成的,当我们需要多个资源,比如多个车位时,可以同时向多个信号量元素申请。信号量的P、V操作
2020-07-19 11:25:22
223
原创 【linux系统编程学习笔记】第六节:进程通信方式之IPC通信机制2(共享内存)
“这一路走来的诽谤和误伤,今天看来是一记耳光,明天看来是一把糖。”The slander and misunderstanding in the growth maybe a slap on our faces today, yet it will be a handful of candy in our lives tomorrow.进程通信方式之IPC通信机制2(共享内存)共享内存相关APIint shmget(key_t key, size_t size, int shmfl.
2020-07-19 11:00:16
278
原创 【linux系统编程学习笔记】第五节:进程通信方式之IPC通信机制1(消息队列)
消息队列提供一种带有数据标识的特殊管道,使得每一段被写入的数据都变成带标识的消息,读取该段消息的进程只要指定这个标识就可以正确地读取,而不会受到其他消息的干扰,从运行效果来看,一个带标识的消息队列,就像多条并存的管道一样。
2020-07-19 10:43:14
584
原创 【linux系统编程学习笔记】第四节:进程通信方式之异步信号(signal、sigprocmask、kill)
U Need To Know When You Close Your Eyes你需要知道什么时候闭上眼睛进程通信方式之异步信号系统当中的信号分类非实时信号实时信号信号的知识点信号的相关APIsighandler_t signal(int signum, sighandler_t handler);int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);信号集合操作函数:int kill( .
2020-07-19 10:09:31
453
原创 【linux系统编程学习笔记】第三节:进程通信方式之匿名管道与有名管道(pipe、mkfifo、access)
其实开心好简单 最紧要好玩进程通信方式之管道进程间通信方式管道——无名管道/匿名管道无名管道相关APIint pipe(int pipefd[2]);//创建无名管道pipe管道——有名管道有名管道API进程间通信方式 管道 无名管道 pipe:适用于亲缘关系进程间的、一对一的通信 有名管道 fifo :适用于任何进程间的一对一、多对一的通信 套接字 socket:适用于跨网络的进程间通信 信号:异步通信方式 system-V IPC对..
2020-07-19 09:45:38
432
原创 【linux系统编程学习笔记】第二节:进程的应用场景分析(pid_t vfork、Daemon进程/精灵进程、系统日志/openlog)
认真和耐心总会帮你解决大部分难题。进程的应用场景分析进程的应用场景调用第三方程序相关APIpid_t vfork(void);//进程复刻Daemon进程(翻译:精灵进程、后台进程、守护进程)系统日志相关APIvoid openlog(const char *ident, int option, int facility);//打开系统日志进程的应用场景调用第三方程序守护进程/精灵进程(服务)调用第三方程序相关APIexec系列函数:#include <unistd.h>.
2020-07-18 19:22:58
453
原创 【linux系统编程学习笔记】第一节:进程初认识(fork、wait、waitpid、exit、_exit、atexit、on_exit)
进程初认识先导知识基本概念应用场景进程的复刻进程的相关APIpid_t pid = fork( )//进程的复刻pid_t wait(int *wstatus);//回收子进程资源pid_t waitpid(pid_t pid, int *wstatus, int options);//回收子进程资源获取进程ID系列函数:void exit(int status);//退出本进程void _exit(int status);//退出本进程int atexit(void (*function)(void));
2020-07-18 14:07:01
636
MAX30102血氧心率传感器官方指定文档(本人开发手环所使用的).zip
2020-08-17
STM32F4开发标准库keil5MDK开发Keil.STM32F4xx_DFP.2.13.0.zip
2020-08-15
STM32F4开发标准库keil5MDK开发Keil.STM32F4xx_DFP.1.0.8.zip
2020-08-15
STM32F1开发标准库keil5MDK开发Keil.STM32F1xx_DFP.2.3.0.zip
2020-08-15
ZStack-CC2530-2.3.0-1.4.0 zigbee协议栈源码(一键安装).zip
2020-07-21
单片机开发用到的46个工具包.zip
2020-07-21
tftpd32.rar
2020-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人