防御式编程的重点就是需要防御一些程序未曾预料的错误,这是一种提高软件质量的辅助性方法,断言assert就用于防御式编程,编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。使用断言是为了验证预期的结果——当程序执行到断言的位置时,对应的断言应该为真;若断言不为真时,程序会终止执行,并给出错误信息。可以在任何时候启用和禁用断言验证,因此可以在程序调试时启用断言而在程序发布时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。 1、原型函数   在大部分编译器下,assert()是一个宏;在少数的编译器下,assert()就是一个函数。我们不需要关心这些差异,可...

  7w6IANSbAp3r   2023年11月01日   80   0   0 嵌入式

    关键字union,又称为联合体、共用体,联合体的声明和结构体类似,但是它的行为方式又和结构体不同,这里的行为方式主要指的是其在内存中的体现,结构体中的成员每一个占据不同的内存空间,而联合体中的所有成员共用的是内存中相同的位置。     简单看下区别: 1structMyStruct 2{3doublea;4intb;5charc;6};7structMyStructvalue; 1unionMyUnion 2{3doublea;4intb;5charc;6};7unionMyUnionvalue; ...

  7w6IANSbAp3r   2023年11月01日   50   0   0 嵌入式

​   摘要:本文主要归纳总结蓝牙模块的不同工作模式,通过蓝牙模块不同的工作模式了解其扮演不同角色时工作的一个基本原理,为更深入的研究蓝牙模块底层的工作机制和技术方案进行铺垫。 1、主设备工作模式         主设备是能够搜索别人并主动建立连接的一方,从扫描状态转化而来的。其可以和一个或多个从设备进行连接通信,它会定期的扫描周围的广播状态设备发送的广播信息,可以对周围设备进行搜索并选择所需要连接的从设备进行配对连接,建立通信链路成功后,主从双方就可以发送接收数据。例如智能手机,数据传输中做主机的蓝牙模块。 &n...

  7w6IANSbAp3r   2023年11月01日   54   0   0 嵌入式

​   摘要:本文主要目的是在拿到一个蓝牙模块后,将其作为从机来对一些基本的软件功能进行测试,用以快速验证是否满足基本的使用需求和功能指标。针对测试的方法和测试的项目进行总结,作为对蓝牙模块从设备模式下的功能的一个初步评估。 一、测试目的         1、快速验证蓝牙模块从机模式下的基本功能。         2、初步评估蓝牙模块从机模式下通信参数指标是否满足软件功能需求。     &nbsp...

  7w6IANSbAp3r   2023年11月01日   38   0   0 嵌入式

​ 一、前言         万物皆有源头,大家学习单片机的源头操作就是通过GPIO口点灯,GPIO作为STM32最基础的外设,也是大家最先接触的外设。当然,看似基础的GPIO,不仅仅是简单的设置好IO口,让灯亮起就一了百了,了解清楚GPIO的使用特性,根本原理、运行机制对我们在涉及到GPIO的相关设计操作上会应用的更加自如。         GPIO就是通用输入/输出接口(General-PurposeIOports),可以配置成输出...

  7w6IANSbAp3r   2023年11月01日   58   0   0 嵌入式

一、引言         在之前围绕STM32的GPIO的基本结构进行了介绍,图1为STM32的5V容忍的GPIO口内部基本结构图,图2为GPIO的基本结构中各个模块部分的概述。         阅读GPIO基本结构的内容能够对GPIO的工作模式有更深的了解。正是由于GPIO的结构中包含了多样性的电路和模块,因此进行合理的配置组合,就可以使得GPIO应用在不同的工作模式下进行工作。​ 图1STM32的5V容忍的GPIO内部基本结构 ...

  7w6IANSbAp3r   2023年11月01日   31   0   0 嵌入式

​  一、前言         在之前的STM32的GPIO理论基础知识中,分别对基本结构和工作模式进行了详细的介绍。GPIO基本结构中主要对GPIO内部的各个功能电路逐一的进行的分析;GPIO工作模式中主要介绍GPIO应用在不同的使用场景下,GPIO端口的静态特征配置和动态的工作模式,同时对信号的工作流进行了分析。         这一篇主要对GPIO模块使用到的寄存器进行详细的分析介绍,适当了解GPIO寄存器的相关知识,可...

  7w6IANSbAp3r   2023年11月01日   65   0   0 嵌入式

一、前言         本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。         了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特点,应用起来会更加的得心应手。         后续将从以下图...

  7w6IANSbAp3r   2023年11月01日   34   0   0 嵌入式

​ 1、前言         在STM32之前,都是老大头51,带着它的“小弟们”MSP430、AVR、PIC在单片机界呼风唤雨。那个时候,市场上遍布8位机,大学教材用51入门,个人、企业学单片机基本上也都在用51。         虽然AVR也有一些8位机市场,但与stc带领下的51单片机是完全不能相比的。当然,这个时候也有16位机的msp430,其他厂家单片机还有pic,高端嵌入式处理器等市场有arm7、arm9等。这个时期的单片机...

  7w6IANSbAp3r   2023年11月01日   27   0   0 嵌入式

​ 一、前言         在之前针对STM32的GPIO相关API函数及配置使用进行了详细的介绍,GPIO作为输入引脚时,调用相关读信号引脚函数接口就可以在程序的循环中,轮询的对输入信号进行读取检测操作,除了轮询的方式访问输入引脚,还可以通过另外一种叫做外部中断的方式来对引脚的输入信号进行检测,本篇首先介绍下EXTI的结构,接着介绍外部中断的相关概念,对STM32的IO外部中断EXTI有个初步的了解,在此基础上重点围绕IO外部中断EXTI的使用展开分析。 图1外部中断设计 二、EXTI结构  &n...

  7w6IANSbAp3r   2023年11月01日   29   0   0 嵌入式

        一般来说,单片机的时钟电路是使用外部的无源晶振和负载电容组合实现连接到单片机的Xin和Xout引脚上,无源晶振自身无法振荡,因此需要匹配外部谐振电路才可以输出振动信号。         但是在实际电路设计中,也会在晶振两端并联一个电阻。这个电阻叫做反馈电阻。​           那么并联的这个反馈电阻有什么作用呢? ...

  7w6IANSbAp3r   2023年11月01日   80   0   0 嵌入式

一、前言         本篇介绍STM32芯片的存储结构,ARM公司负责提供设计内核,而其他外设则为芯片商设计并使用,ARM收取其专利费用而不参与其他经济活动,半导体芯片厂商拿到内核授权后,根据产品需求,添加各类组件,生产芯片售卖。图1为STM32的组成示意图,其中Cortex-M3内核、调试系统都是ARM公司设计,内部总线、外设、存储、时钟复位等都由ST公司开发。可以明显看出总线是cpu、内存、外设传递信息的公用通道,芯片上的各个部件通过总线相连接。 图1STM32芯片简要结构图   &n...

  7w6IANSbAp3r   2023年11月01日   80   0   0 嵌入式

​ 该专栏是为Linux内核开发编程做铺垫,如果你对操作系统很熟悉,想了解一些Linux内核发开的知识,请直接跳转至《Linux内核编程专栏》,如果你对Linux内核编程也很熟悉,想了解Linux内核的各个模块,可移步至《Linux内核分析专栏》,带你领略Linux内核的绝美风光。 ​         操作系统导学会对一些基本的概念进行讲解,但并不是单纯的讲解概念,而是通过操作系统发展历史的脉络,解释一些概念。操作系统不断改进,针对计算机硬件发展,用户需求的变化,而提出的一些高效的设计。永远记住,操作系统是管理...

  7w6IANSbAp3r   2023年11月01日   28   0   0 Linux
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~