- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 深入理解C语言中的Setjmp和Longjmp
Setjmp和Longjmp是C标准库中的函数,它们用于实现非局部跳转(non-local jumps)。这意味着你可以在程序的不同位置之间跳转,而不仅仅是在函数之间跳转。这对于错误处理和异常处理非常有用。下面展示一些原型代码Setjmp和Longjmp是C语言中用于实现非局部跳转的强大工具,可以用于错误处理、异常处理和状态管理。尽管它们在某些情况下非常有用,但要小心使用,以避免导致代码不易维护和理解。
2023-09-27 16:39:03
974
原创 STM32引脚及GPIO的概念
b.开漏输出模式(Open-Drain):在开漏输出模式下,GPIO引脚只提供低电平输出状态,而不提供高电平输出状态。c.推挽复用输出模式(Push-Pull Alternate Function):在推挽复用输出模式下,GPIO引脚被配置为特定功能(如UART、SPI、PWM等)的输出引脚。a.推挽输出模式(Push-Pull):在推挽输出模式下,GPIO引脚可以提供高电平(VDD)和低电平(GND)两种输出状态,当输出为高电平时,引脚与VDD连接,并提供VDD电压。每个引脚可以被配置为输入或输出。
2023-07-04 23:19:03
2704
原创 状态机模式(c语言版设计模式)
设计模式-状态机-c语言前言只用逻辑来编程可能导致代码比较难维护。时常看别人写的代码以及自己以前写的代码,发现逻辑是比较清晰但是健壮性还是不足,想要修改优化增加新的代码反而比较费劲,重新写可能比在原来代码上修改可能要来得直接。为什么会出现这样的情况?我想首要的原因是,在编程时只顾着实现逻辑,而忘了思考如何让代码更易于维护。状态机-顾名思义,讲的是如何方便得更改某个实体状态的模型,简单得说就是有1byte(1bit)甚至更大的全局数据,通过封装一系列操作接口改变成需求的状态。普通型状态机通过数组转换
2021-06-22 11:33:29
1368
原创 C指针简单理解使用
1、指针是什么?指针可以说是C语言的灵魂,存放内存地址的变量,可以访问内存中的数据。根据C语言中定义用(类型名 * )表示一个指针变量,至于有多少个*号那要看指针存放的是什么类型变量的地址(&变量名),这样就衍生了多级指针,通过定义一个指针类型的指针存放指针的地址。可能这句话有点绕,但是在C语言中变量存放的数据需要相同,否者需要进行类型强转。...
2020-08-18 14:28:19
359
原创 数据结构-模型理解
数据结构大学时期最头疼课程之一,对于比较菜鸡的我好像没有不头疼的课程,除了那些真心不想学的置之不理的课程。大学已然回不去,但是现在温故而知新还是为时不晚的。以前没有思考的问题那就现在来想把。什么是数据结构?在我看来数据之间变得有关系那便是构成了数据结构。那什么是数据呢?数据在计算机看来就只有两种状态‘0’和‘1’,模拟电路叫高低电平,通断。但是对于一个CPU来说如果是10个引脚便有512(2^1...
2020-04-25 22:31:51
326
1
原创 冯·诺伊曼结构和哈佛结构的区分
冯·诺伊曼结构和哈佛结构1、冯·诺伊曼结构:是一种将指令集存储内存和数据存储内存合并咋一起的计算机设计概念结构。(存储程序计算机)特点:以运算单元为中心;采用存储程序计算原理;按地址访问存储器,地址呈线性;控制流由指令产生;指令由操作码和地址码组成;数据编码以二进制;总体上,现代的计算机仍然使用的是冯·诺伊曼结构,因为有了存储程序之后计算机通过已有的程序改变计算机内存中的程序或数据,让计算...
2019-02-28 16:54:41
1300
原创 STM32-DHT11(温湿度传感器)之学习笔记
一、模块分析:原理图和引脚连接图:由图可知DHT11(温湿度模块)是单总线的连接,数据的输入输出由一根线完成,DQ网络标号对应的引脚是PG9就是GPIO外设接口G组的第九个引脚。二、DHT11时序图:由上图可以判断当主机开始信号发送之后手袋DHT11响应信号并开始接受数据时,我们可以通过判断高电平的维持时间来获取当前接受的数据位是0/1这样就可以把数据保存下来。判断的依据是开始接受数...
2018-12-16 22:08:58
24695
原创 STM32-PWM(Pulse Width Modulation脉冲宽度调制)之呼吸灯的实现
一、PWM概述:脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控...
2018-12-16 13:31:52
2638
1
原创 TIM-计时器学习笔记
当前我使用的STM32F407上有14个定时器(TIM1-TIM14)确定计时器总线:APB2 TIM 1 TIM8(高级) TIM 9 TIM 10 TIM 11 -----》168MHzAPB1 TIM6 TIM7(基本) TIM2 TIM3 TIM4 TIM5 TIM12 TIM13 TIM14 -----》84MHz编写代码:1) 开启计数器时钟2) 初...
2018-12-13 15:23:12
1388
1
原创 SysTick滴答定时器简介
概述:系统滴答定时器是一个非常基本的倒计时定时器,用于在每隔一定的时间产生一个中断,即使是系统在睡眠模式下也能工作。它使得 OS 在各 CM3器件之间的移植中不必修改系统定时器的代码,移植工作一下子容易多了。 SysTick定时器也是作为 NVIC 的一部分实现的。相关寄存器SysTick控制及状态寄存器(地址:0xE000_E010) —》这个寄存器当中的第 16 位SysTick重装...
2018-12-12 20:33:03
479
原创 STM32F4-超声波测距模块学习笔记(HC-SR04)
(1)基本的工作原理:a、IO口 --TRIG触发测距,最少给10us的高电平b、模块自己发出8个40KHz的方波,检测是否有信号返回c、ECHO回向信号输出一个高电平,高电平持续输出的时间就是超声波一个来回的时间d、距离=(高电平持续时间*340m/s)/2(2)IO口选择:由于数据输出使用TTl串口数据输出,所以借用了STM32预留的CAMERA接口,选用了DCMI_D5(TRIG...
2018-12-12 20:26:20
10639
7
原创 Qt中网络编程(C/S架构)Tcp
A. 服务器:1) 创建服务器对象:QTcpServer server;2) 绑定+监听:server中的listen方法 参数(QHostAddress::Any,端口号一般为1024-65535);3) 当有客户端连接上服务器时,会触发信号readyRead(),可以利用connect()方法,建立槽函数设置与连接上的客户端的通信;4) 获取连接server的套接字socket =...
2018-11-27 20:29:47
1964
原创 浮点数(实数)中单精度与双精度区别
#在内存中存储格式的区别:folat单精度:1位信号(0为正1为负),8位1字节为指数,最后23位为小数部分##double双精度:1位信号(0为正1为负),11位为指数,最后23位为小数部分从存储的不同可以看出单精度在长度上已经小双精度一倍,当对数据类型的精度要求不高(±3X2(38))时用单精度就可以,当对数据需要多次迭代使用需要高精度的小数值(±3X2(308))时可以用双精度或l...
2018-11-26 20:39:09
5832
Attacking GlobalPlatform SCP02-compliant Smart Cards
2019-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人