笔记
文章平均质量分 81
幸运的涛
这个作者很懒,什么都没留下…
展开
-
STM32通讯讲解(概念)
一、通信的概念:在计算机设备与设备之间或集成电路之间常常需要进行数据传输。二、串行通讯与并行通讯(按数据传送的方式分)1、串行通信:串行通讯是指设备之间通过少量数据信号线(一般是8根以下), 地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。可以同时传输多个数据位的数据。2、并行通信:同一时刻只能传输一个数据位的数据。并行通讯与串行通讯的对比图三、全双工、半双工及单工通讯(按数据通讯的方向分)主要以信道的方向来区分四、同步通讯与异步通讯(按通讯的数据同步方式分)通讯过程中是原创 2021-09-12 01:35:22 · 485 阅读 · 0 评论 -
外部中断/事件控制器——EXIT功能框图解析
一、 EXTI简介EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的20个中断/事件线。 每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置, 可以单独配置为中断或者事件,以及触发事件的属性。二、EXTI功能框图EXTI的功能框图包含了EXTI最核心内容,掌握了功能框图,对EXTI就有一个整体的把握,在编程时思路就非常清晰。EXTI功能框图见图 EXTI原创 2021-08-29 15:05:59 · 1981 阅读 · 1 评论 -
MQTT协议(概括与详解)
I概括一,MQTT协议1、MQTT协议可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。2、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。对负载内容屏蔽的消息传输。使用 TCP/IP 提供网络连接。3、实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。原创 2021-08-25 16:52:35 · 23777 阅读 · 1 评论 -
stm32-EXIT外部中断实验
一、固件库代码://EXTI 初始化结构体typedef struct {uint32_t EXTI_Line; // 中断/事件线EXTIMode_TypeDef EXTI_Mode; // EXTI 模式EXTITrigger_TypeDef EXTI_Trigger; // 触发类型FunctionalState EXTI_LineCmd; // EXTI 使能} EXTI_InitTypeDef;解析:EXTI_Line:EXTI 中断/事件线选择,可选 EXTI0至 EXTI原创 2021-08-13 11:59:41 · 1106 阅读 · 0 评论 -
stm32时钟编程解析(超细节)
固件库编程使用HSE配置系统时钟并使用MCO输出监控时钟系统创建文件bsp_rccclkconfig.cbsp_rccclkconfig.huser文件夹——右键包含bsp_rccclkconfig.c文件再include “bsp_rccclkconfig.h”——魔术棒——c/c++——添加我就文件rcc(包含.c和.h)1、操作 .h#ifndef __BSP_PCCCLKCONFIG_H#define __BSP_PCCCLKCONFIG_H#include “stm32f10x原创 2021-08-12 12:41:00 · 381 阅读 · 0 评论 -
初识STM32中断(基础)
一、中断简介1、STM32中断非常强大,每个外设都可以产生中断,无特别说明,异常就是中断,中断就是异常。2、stm32可以中断嵌套中断优先级:数字越小优先级越大3、如图:主函数与中断程序二中断类型1、系统异常,体现内核水平(RESET复位)2、外部中断:体现在外设水平(GPIO)3、NVIC是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设NVIC外设简介:嵌套向量中断控制器,属于内核外设管理着包括内核和片上所有外设的中断相关的功能。两个重要的原创 2021-08-08 17:38:20 · 701 阅读 · 0 评论 -
STM32F1时钟(详解)
一、时钟树图表二、时钟详解(结合时钟树)HSE时钟(72M)HSE:High Speed-External Clock signal,即高速的外部时钟来源:无源晶振(4-16M),通常使用8M控制:RCC CR时钟控制寄存器的位16:HSEON控制HSI时钟HSI:Low Speed Internal Clock signal,高速的内部时钟来源:芯片内部,大小为8M,当HSE故障时,系统时钟会自动切换到HSI,直到HSE启动成功。控制:RCC_CR时钟控制寄存器的位0:HSION控制原创 2021-08-07 18:45:07 · 3514 阅读 · 0 评论 -
STM32——GPIO位带操作
一、代码 GPIO 输入输出位操作// 单独操作 GPIO 的某一个 IO 口,n(0,1,2...16),n 表示具体是哪一个 IO 口#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出#define PBin(n) BIT_ADDR(GPIOB_IDR_Ad原创 2021-08-06 18:42:53 · 1495 阅读 · 0 评论 -
stm32 按键输入控制LED灯
一、stm32 按键输入控制LED灯volatile是一个特征修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值输出寄存器:ODR BSRR BRR输入寄存器:IDR(0 低电平)#define __I volatile #define __I volatile const #define __O原创 2021-08-06 10:42:53 · 2055 阅读 · 0 评论 -
STM32固件库认识+固件库模板点灯
一、stm32固件库的认识1-汇编编写的启动文件startup_stm32f10xhd.s:设置堆栈指针、设置Pc指针、初始化中断向量表、配置系统时钟、······2-时钟配置文件system stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M3-外设相关的stm32f10x.h:实现了内核之外的外设的寄存器映射XX:GPIO、 USRAT、T2C、SPI、FsMCstm32f10x_xx.c:外设的驱动函数库文件stm32f10xxx,stm32f10x_xx.h:存放外设原创 2021-08-01 01:49:13 · 761 阅读 · 0 评论 -
STM32F103寄存器代码详解及例子
输出模式(推挽/开漏)在输出模式中,推挽模式时双MOS管以轮流方式工作,输出数据寄存器GPIOx_ODR可控制I/O输出高低电平。开漏模式时,只有N-MOS管工作, 输出数据寄存器可控制I/O输出高阻态或低电平。输出速度可配置,有2MHz10MHz50MHz的选项。此处的输出速度即I/O支持的高低电平状态最高切换频率, 支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。在输出模式时施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。...原创 2021-07-23 11:08:41 · 3165 阅读 · 5 评论 -
学stm32前必需知识点
仿真的概念:仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。例如,在单片机的开发过程中,程序的设计是最为重要的但也是难度最大的一种最简单和原始的开发流程是:编写程序烧写芯片验证功能,这种方法对于简单的小系统是可以对付的,但在大系统中使用这种方法则是完全不可能的。仿真器的概念:仿真器(emulator)以某一系统复现另一系统的功能。与计算机模拟系统(Computer Simulation)的区别在于,仿真器原创 2021-07-20 11:03:01 · 2870 阅读 · 3 评论 -
c\c++内存分配定义与用法(多种分配方式)
好文推荐:堆栈的区别:https://blog.csdn.net/summer_sy/article/details/88544433?spm=1001.2014.3001.5502堆栈的区别:https://dablelv.blog.csdn.net/article/details/80849966c语言内存分配基础:https://blog.csdn.net/youoran/article/details/10990815一、(C\C++).内存分成5个区(1)栈:内存由编译器在需要时自动分配原创 2021-07-15 11:57:25 · 523 阅读 · 0 评论 -
c语言结构体、枚举、共用体定义与使用(内含代码详解)
一、结构体结构体:(变量)struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩} stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };eg.(结构体数组) struct stu{ char *name; //姓名 int num; //学号原创 2021-07-14 00:00:16 · 1010 阅读 · 2 评论 -
C++新手入门
用return这种形式就能定义返回值, return 0可以 终止 main() 函数,并返回值 0。return 0 代表程序正常退出,return 1代表程序异常退出!使用return 语句可以返回一个变量内的值或一个指针,也可用return0,表示返回为空。return 代表调到函数外,return 0代表函数正常终止return 1代表函数非正常终止而我觉得还有一个作用就是return之后你至少知道代码成功运行到最后一行,中间没有异常中止,并且return 关键字的还有一个作用是返回程序原创 2021-07-13 20:55:20 · 184 阅读 · 0 评论 -
c语言基础例题(面试必学)
一、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。要用全局变量,需要使用” :: ”局部变量可以与全局变量同名, 在函数内引用这个变量时, 会用到同名的局部变量,而不会用到全局变量。 对于有些编译器而言, 在同一个函数内可以定义多个同名的局部变量, 比如在两个循环体内都定义一个同名的局部变量, 而那个局部变量的作用域就在那个循环体内二、程序的内存分配答:一个由 c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack )—由编译器自动分配释放,存放函数的参数值,局部变量的值原创 2021-07-12 23:10:23 · 368 阅读 · 4 评论 -
arduino 学习
Arduino编程基础(二)——C\C++语言基础(上)https://www.arduino.cn/thread-45049-1-1.htmlArduino编程基础(二)——C\C++语言基础(下)https://www.arduino.cn/thread-45050-1-1.htmlArduino编程基础(三)——常用电子元件和扩展模块https://www.arduino.cn/thread-45117-1-1.htmlvoid setup() {// 在这里加入setup代码,它只会原创 2021-07-09 11:43:14 · 586 阅读 · 0 评论 -
ESP8266智能灯控
一,MQTT协议1、MQTT协议可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。2、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。对负载内容屏蔽的消息传输。使用 TCP/IP 提供网络连接。3、实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。4、MQT原创 2021-06-26 17:17:46 · 2040 阅读 · 0 评论 -
数组指针,函数,字符串
一、数组名作函数参数数组名做函数参数,函数的形参会退化成指针//形参改变实参#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<time.h>#include<math.h>#include<stdlib.h>/*void my_strcat(char* ch1, char* ch2){int i = 0;while (ch原创 2021-06-14 22:35:28 · 101 阅读 · 0 评论 -
数组指针、函数指针与多级指针及基础运算
一、指针与数组#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<time.h>#include<math.h>#include<stdlib.h>int main1(){int arr[] = { 100,2,3,4,5,6,7,8,9,10 };//数组名是一个常量 不允许赋值//数组名是数组首元素地址//arr=100;原创 2021-06-04 16:46:37 · 183 阅读 · 0 评论 -
函数,指针定义与使用
一、函数的分类:c程序是由函数组成的,我们写的代码都是由主函数main()开始执行的。函数是c程序的基本模块,是用于外层特定任务的程序代码单元。从定义角度上函数可分为系统函数和用户定义函数1、系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用他们,如打印函数printf()。2、用户定义函数:以解决用户的专门需要。函数的作用:可以省去重复代码的编写,降低代码的重复率。步骤:导入头文件—使用函数—获取函数返回值二、函数的调用:产生随机数需要关心5个因素:1、头文件原创 2021-05-22 16:02:05 · 372 阅读 · 0 评论 -
整型数组,字符串,字符数组的使用
相同类型若干变量按有序形式组织起来形成数组*数组是在内存中连续的相同类型的变量空间变量的定义:数据类型 变量 = 值;数组的定义:数据类型 数组名[元素个数] = {值1,值2,值3};数据的提取使用:数组下标 数组名[下标] (下标从0开始)利用循环提取:eg1for(int i=0;i<10;i++){printf("%d\n",arr[i]);}数组在内存中的储存方式和大小1、 储存方式int arr[10]={1,2,3,4,5,6,7,8,9原创 2021-05-15 18:41:11 · 1397 阅读 · 0 评论 -
编程细节以及条件语句与循环语句嵌套
编程细节以及条件语句与循环语句嵌套*常量与字符串常量(char)%s表示输出一串字符串字符常量‘a’ 字符串常量“a”每个字符串结尾,编译器会自动添加结束标志位\0,即“a”包含两个字符“a”与\0printf 输出一个字符串putchar 输出一个char (专门)用于char printf(“%c\n”,a);等于 putchar(a)或者(97)ASCII码; 表示相同输出aputchar() 括号内可以输入转义字符(‘……’),变量,数字,字符(但必须在ASCII原创 2021-05-02 10:41:37 · 492 阅读 · 0 评论 -
初学c语言
初学c语言 这一周观经过了十几个小时的c语言的学习,来谈谈我对c语言的了解。 **第一部分**——c语言程序编写软件 Microsoft visual studio 2019 下载链接与安装 https://zhuanlan.zhihu.com/p/94998894 **第二部分**——c语言的分布编译 1、预处理:宏定义展开,头文件展开,条件编译,去掉注释 2、编译:检查语法,将c语言转换成c汇编语言 3、汇编:将汇编语言转换成机械语原创 2021-04-24 18:41:53 · 253 阅读 · 0 评论