自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 野火学习笔记(15) —— I2C —— 读写 EEPROM

这里写目录标题1. I2C 协议简介1.1 I2C 物理层1.2 协议层1.2.1 I2C 基本读写过程1.2.2 通讯的起始和停止信号1.2.3 数据有效性1.2.4 地址及数据方向1.2.5 响应2. STM32 的 I2C 特性及架构2.1 STM32 的 I2C 外设简介2.2 STM32 的 I2C 架构剖析2.2.1 通讯引脚2.2.2 时钟控制逻辑2.2.3 数据控制逻辑1. I2C 协议简介I2C 通讯协议 (Inter - Integrated Circuit) 是由 Phiil

2021-10-23 16:12:11 3799

原创 野火学习笔记(14) —— DMA —储区访问

文章目录1. DMA 简介2. DMA 功能框图2.1 ① DMA 请求2.2 ② 通道2.3 ③ 仲裁器3. DMA 数据配置3.1 从哪里来到哪里去3.2 要传多少,单位是什么3.3 什么时候传输完成4. DMA 初始化结构体详解5. DMA 存储器到存储器模式实验1. DMA 简介DMA(Direct Memory Access) —直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候, CPU 可以干其他的事情,好像是多线程一样。数据传输

2021-09-07 14:15:45 1972

原创 野火学习笔记(13) —— USART —串口通讯

文章目录1. 串口通讯协议简介1.1 物理层1.1.1 电平标准1.1.2 RS-232 信号线1.2 协议层1.2.1 波特率1.2.2 通讯的起始和停止信号1.2.3 有效数据1.2.4 数据校验2. STM32 的 USART 简介3. USART 功能框图3.1 校验控制3.2 中断控制4. USART 初始化结构体详解5. USART1 接发通信实验5.1 硬件设计5.2 软件设计5.2.1 编程要点5.2.2 代码分析1. 串口通讯协议简介串口通讯 (Serial Communica

2021-07-21 09:48:06 11544 2

原创 野火学习笔记(12) —— 通讯的基本概念

文章目录1. 串口通讯协议简介2. 全双工、半双工及单工通讯3. 同步通讯与异步通讯4. 通讯速率1. 串口通讯协议简介按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线 (一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用 8、 16、 32 及 64 根或更多的数据线进行传输的通讯方式,它们的通讯传输对比说明见图并行通讯与串行通讯的对比图 ,并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串

2021-07-20 10:26:36 265

原创 野火学习笔记(10) —— EXTI ——外部中断/事件控制器

文章目录1. EXTI 简介2. EXTI 功能框图3. 中断/事件线4. EXTI 初始化结构体详解5. 外部中断控制实验5.1 硬件设计5.2 软件设计5.2.1 编程要点5.2.2 软件分析1. EXTI 简介EXTI(External interrupt/event controller) —— 外部中断/事件控制器, 管理了控制器的 20 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。 EXTI 可以实现对每个中断/事件线进行单独配置

2021-07-17 15:50:47 2202 3

原创 野火学习笔记(8) —— RCC —— 使用 HSE/HSI 配置时钟

文章目录1. RCC 主要作用——时钟部分2. RCC 框图剖析—时钟部分2.1 系统时钟① HSE 高速外部时钟信号② PLL 时钟源RCC : reset clock control 复位和时钟控制器。1. RCC 主要作用——时钟部分设置系统时钟 SYSCLK、设置 AHB 分频因子(决定 HCLK 等于多少) 、 设置 APB2 分频因子(决定 PCLK2 等于多少)、设置 APB1 分频因子(决定 PCLK1 等于多少)、设置各个外设的分频因子;控制 AHB、 APB2 和 APB1

2021-07-16 11:09:05 1697 2

原创 野火学习笔记(7) —— GPIO ——位带操作

文章目录1. 位带简介1.1 外设位带区1.2 SRAM 位带区1.3 位带区和位带别名区地址转换2. GPIO 位带操作2.1 GPIO 寄存器映射2.2 GPIO 位操作2.3 主函数2.4 代码整理这章看得不是很懂,大致的意思是对单个 GPIO 口进行电平控制。1. 位带简介位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。 51 单片机中通过关键字 sbit 来实现位定义, STM32 没有这样的关键字,而是通过访问位带别名区来实现。在 STM32 中,有两个地

2021-07-13 19:27:36 3411 11

原创 笔记(6) —— GPIO检测高低电平

文章目录一、适用功能二、 硬件设计(参考)三、 软件设计① 使用到的固件库文件② 代码整理一、适用功能检测按键,光电开关,水位传感器等检测 GPIO 输入电平信号。二、 硬件设计(参考)三、 软件设计① 使用到的固件库文件#include stm32f10x_gpio.c/stm32f10x_gpio.h#include stm32f10x_rcc.c/stm32f10x_rcc.h② 代码整理delay.h#ifndef __DELAY_H#define __

2021-07-13 15:44:11 9536

原创 野火学习笔记(6) —— GPIO 输入 —— 按键检测

文章目录1. 硬件设计2. 软件设计2.1 编程要点2.2 代码分析2.2.1 按键引脚宏定义2.2.2 按键 GPIO 初始化函数2.2.3 检测按键的状态2.2.4 主函数2.2.5 代码整理1. 硬件设计按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生 图 13-1 中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。本实验板连接的按键带硬件消抖功能,见 图 13-2 ,它利用电容充放电的延时,消除了波纹,从而简化软件的处理,软件只需要

2021-07-13 11:29:36 6128 1

原创 笔记(5) —— GPIO 输出高低电平

文章目录一、 适用功能二、 硬件设计(参考)三、 软件设计① 使用到的固件库文件② 代码整理一、 适用功能GPIO 翻转、LED 闪烁、无源蜂铃器、跑马灯等 GPIO 输出高低电平控制。二、 硬件设计(参考)三、 软件设计① 使用到的固件库文件#include stm32f10x_gpio.c /stm32f10x_gpio.h#include stm32f10x_rcc.c/stm32f10x_rcc.h② 代码整理led.h#ifndef _led_H#defi

2021-07-13 09:46:30 5803

原创 野火学习笔记(5) —— GPIO 输出—使用固件库点亮 LED

文章目录1. 硬件设计2. 软件设计2.1 编程要点2.2 代码分析2.2.1 LED 灯引脚宏定义2.2.2 控制 LED 灯亮灭状态的宏定义2.2.3 LED GPIO 初始化函数2.2.4 主函数2.2.5 文件整理3. STM32 标准库补充知识3.1 SystemInit 函数去哪了?3.2 断言3.3 Doxygen 注释规范3.4 防止头文件重复包含1. 硬件设计在本教程中 STM32 芯片与 LED 灯的连接见 图 12-1,这是一个 RGB 灯,里面由红蓝绿三个小灯构成, 使用

2021-07-12 16:28:15 3670 10

原创 野火学习笔记(4) —— 固件库

文章目录- 自己写库—构建库函数雏形1. 什么是 STM32 函数库2. 为什么采用库来开发及学习?3. 实验:构建库函数雏形3.1 外设寄存器结构体定义3.2 外设存储器映射3.3 外设声明3.4 定义位操作函数3.5 定义初始化结构体 GPIO_InitTypeDef3.6 定义引脚模式的枚举类型3.7 定义 GPIO 初始化函数3.8 全新面貌,使用函数点亮 LED 灯3.9 总结- 初识 STM32 标准库1. CMSIS 标准及库层次关系1.1 库目录、文件简介1.1.1 CMSIS 文件夹1.1

2021-07-12 15:23:01 1590

原创 野火学习笔记(3) —— 使用寄存器点亮 LED 灯

文章目录1. GPIO 简介2. GPIO 框图剖析2.1 基本结构分析2.2 GPIO 工作模式3. 实验:使用寄存器点亮 LED 灯3.1 硬件连接3.2 启动文件3.3 stm32f10x.h 文件3.4 main 文件1. GPIO 简介GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 S

2021-07-12 10:53:37 4554 9

原创 野火学习笔记(2) —— 映射

文章目录1. 存储器映射1.1 存储器映射1.1.1 存储器区域功能划分2. 寄存器映射2.1 STM32 的外设地址映射2.2 外设基地址2.3 外设寄存器1. 存储器映射被控单元的 FLASH, RAM, FSMC 和 AHB 到 APB 的桥(即片上外设),这些功能部件共同排列在一个 4GB 的地址空间内。我们在编程的时候,可以通过他们的地址找到他们,然后来操作他们(通过 C 语言对它们进行数据的读和写)。1.1 存储器映射存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存

2021-07-10 10:44:08 431 1

原创 野火学习笔记(1) —— 芯片里面有什么

1. ICode 总线ICode 中的 I 表示 Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在 FLASH 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。2.驱动单元DCode 总线DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 const 关键字修饰,是放到内部的 FLASH 当中的,

2021-07-10 09:30:27 843

原创 位、字节、字符的简介

位(bit):是计算机内部数据储存的最小单位。又称二进制,每个二进制 0 或者 1 就是1 个位(bit)。字节(byte):是计算机中数据处理的基本单位,习惯上用大写 B 来表示,1B(byte,字节)= 8bit(位)。字符(Character):计算机中使用的字母、数字、字和符号,比如’A’、‘B’、’$’、’&'等。注意:一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。字节与字符:ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个

2021-05-25 09:31:34 1011 2

原创 15.郝斌C语言笔记——算法

通俗定义: 解题的方法和步骤狭义定义: > 对存储数据的操作 > 对不同的存储结构,要完成某一个功能所执行的操作是不一样的 比如: 要输出数组中所有的元素的操作和 要输出链表中所有元素的操作肯定是不一样的 这说明: 算法是依附于存储结构的 不同的存储结构,所执行的算法是不一样的...

2020-02-22 22:28:12 164

原创 14.郝斌C语言笔记——链表

我们至少可以通过两种结构来存储数据 > 数组: - 优点: 存取速度快 - 缺点: 需要一个连续的很大的内存 插入和删除元素的效率很低 > 链表 - 专业术语: 首节点: 存放第一个有效...

2020-02-22 22:25:20 246

原创 13.郝斌C语言笔记——补码

原码: 原码也叫 符号-绝对值码 最高位0表示正, 1表示负, 其余二进制位是该数字的绝对值的二进制位 例如: -5 的源码等于: 10101 原码简单易懂 加减运算复杂 存在加减乘除四种运算,增加了CPU的复杂度 零的表示不唯一反码: 反码运算不便,也没有在计算机中应用移码: 移码表示数值平...

2020-02-22 15:03:30 197

原创 12.郝斌C语言笔记——枚举

什么是枚举 把一件事所有可能的取值一一列举出来怎样使用枚举 例如: #include <stdio.h> //只定义了一个数据类型,并没有定义变量, //该数据类型的名字是 enum WeekDay enum WeekDay { //如果没有定义的话,默认是从零...

2020-02-21 15:16:44 162

原创 菲波拉契序列

1 2 3 5 8 13 …#include <stdio.h>int main(void){ int n; int f1, f2, f3; int i; f1 = 1; f2 = 2; printf("请输入您需要求的项的序列:\n"); scanf("%d", &n); if (1 == n) { f3 = n; } else if ...

2020-02-20 22:36:41 144

原创 前自增和后自增的比较

#include <stdio.h>int main(void){ int i; int j; int k; int m; i = j = 3; k = i++; m = ++j; printf("i = %d\n", i); printf("j = %d\n", j); printf("k = %d\n", k); printf("m = %d\n",...

2020-02-20 22:29:58 268

原创 求1到100之间的奇数的平均值

#include <stdio.h>int main(void){ int i; int sum = 0; int cnt = 0; float avg = 0.0f; for (i = 1; i <= 100; ++i) { if (i % 2 == 1) { sum += i; ++cnt; } } avg = 1.0 * su...

2020-02-20 22:24:18 2460 1

原创 求1到100之间的奇数个数

#include <stdio.h>int main(void){ int i; int cnt = 0; for (i = 1; i <= 100; ++i) { if (i % 2 == 1) ++cnt; } printf("cnt = %d\n", cnt); return 0;}/* 在Microsoft Visual Stud...

2020-02-20 22:19:59 2665

原创 求1到100之间所有奇数之和

#include <stdio.h>int main(void){ int i; int sum = 0; for (i = 1; i < 100; i+=2) { sum += i; } printf("1到100之间所有奇数之和为:%d\n", sum); return 0;}/* 在Microsoft Visual Studio 2010...

2020-02-20 22:15:33 3871

原创 简单大到小排序

#include <stdio.h>int main(void){ int a, b, c; int t; printf("请输入三个整数(中间以空格分隔):\n"); scanf("%d %d %d", &a, &b, &c); if (a < b) { t = a; a = b; b = t; } if (a &...

2020-02-20 22:10:02 142

原创 冒泡算法

#include <stdio.h>void sort(int * a, int len){ int i, j, t; for (i = 0; i < (len - 1); ++i) { for (j = 0; j < (len - 1 - i); ++j) { //>表示升序 //<表示降序 if (a[j] > ...

2020-02-20 21:56:51 153

原创 11.郝斌C语言笔记——结构体

为什么需要结构体 为了表示一些复杂的事物,而普通的基本类型无法满足实际要求.为什么叫结构体 把一些基本数据组合在一起形成的一个新的复合数据类型,这个叫做结构体.如何定义结构体 3种方式,推荐使用第一种: //第一种方式 //这只定义了一个新的数据类型,并没有定义变量. struct Student { int age;...

2020-02-20 21:51:44 247

原创 10.郝斌C语言笔记——指针

指针的重要性 表示一些复杂的数据结构; 快速的传递数据,减少了内存的耗用; 使函数返回一个以上的值; 能直接访问硬件; 能够方便的处理字符串; 是理解面向对象语言中引用的基础. 总结: 指针是C语言的灵魂.指针的定义 地址 内存单元的编号; 从零开始的非负数整数; ...

2020-02-16 22:18:09 293

原创 9.郝斌C语言笔记——变量的作用域和存储方式

按作用域分: > 全局变量: - 在所有函数外部定义的变量叫全局变量 - 全局变量使用范围: 从定义位置开始到整个程序结束 > 局部变量: - 在一个函数内部定义的变量或者函数的形参 都统称为局部变量 void f(int i) { ...

2020-02-15 23:34:05 170

原创 8.郝斌C语言笔记——函数

为什么需要函数 > 避免了重复性操作 > 有利于程序的模块化什么叫函数 > 逻辑上: - 能够完成特定功能的独立的代码块 > 物理上: - 能够接收数据【当然也可以不接收数据】 - 能够对接收的数据进行处理 - 能够将数据处理的结果返回【当然也可以不返回任何值】 &g...

2020-02-15 22:04:53 146

原创 7.郝斌C语言笔记——数组

为什么需要数组 为了解决大量同类数据的存储和使用问题 为了模拟现实世界例子: int a[5] = {1, 2, 3, 4, 6}; a是数组的名字 5代表数组元素的个数,并且这5个元素分别用: a[0],a[1],a[2],a[3],a[4], 来表示数组的分类 > 一维数据 - 怎样定义一维数组 ...

2020-02-15 20:46:54 186

原创 6.郝斌C语言笔记——流程控制

1.表达式与语句的区别 > 不含有分号的是表达式 > 含有分号的是语句2.什么是流程控制 程序代码执行的顺序3.流程控制的分类顺序选择 > 定义: 某些代码可能执行,也可能不执行,有选择的执行某些代码 >分类: - if · if最简单的用法 ...

2020-02-14 23:17:27 208

原创 5.郝斌C语言笔记——运算符

1.算术运算符 + 把两个操作数相加 - 从第一个操作数中减去第二个操作数 * 把两个操作数相乘 / 分子除以分母 % 取模运算符,整除后的余数 ++ 自增运算符,整数值增加 1 -- 自减运算符,整数值减少 1 除法 / 的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截...

2020-02-13 17:28:05 184

原创 4.郝斌C语言笔记——基本的输入和输出函数的用法

1.printf() —— 将变量的内容输出到显示器上【重点】 >四种用法 - printf("字符串"); - printf("输出控制符", 输出参数); - printf("输出控制符1 输出控制符2 ... ...", 输出参数1, 输出参数2, ... ...); - printf("输出控制符 非输出控制符"...

2020-02-12 21:33:55 204

原创 3.郝斌C语言笔记——C编程预备计算机专业知识

1. CPU 内存条 硬盘 显卡 主板 显示器 之间的关系2.HelloWorld程序如何运行起来的 #include <stdio.h> int main(void) { printf("Hello World!"); return 0; }3.什么是数据类型 >基本类型数据 - ...

2020-02-12 17:46:06 324

原创 2.郝斌C语言笔记——优缺点

C语言的特性优点:- 代码量小- 速度快- 功能强大缺点:- 危险性高- 开发周期长- 可移植性不强

2020-02-11 20:42:55 389

原创 1.郝斌C语言笔记——书籍推荐

学C语言书籍推荐《C语言程序设计》作者:谭浩强《The C Programming Language》出版社:机械工业出版社《C Primer Plus》出版社:人民邮电出版社《C和指针》出版社:人民邮电出版社《C专家编程》《C陷阱与缺陷》出版社:人民邮电出版社《C语言的科学与艺术》出版社:机械工业出版社额外的...

2020-02-11 20:34:33 900

原创 C语言自学篇(三)。。。C 数据类型

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。C 中的类型可分为:1.基本类型它们是算术类型,包括两种类型:整数类型和浮点类型。整数类型类型存储大小值范围char1字节-128到127 或 0到255unsigned char1字节0到255sig...

2019-12-13 14:54:16 177

原创 C语言自学篇(二)。。。C 基本语法

C 语言的其他基本的构建块 1.分号 ";" 分号是语句结束符。2.注释 "//"和"/**/" 编译器会忽略注释内容,大多数用于提示说明; "//" 是单行注释,这种注释可以单独占一行,也可以出现在一行中其他内容的右侧,注意这种注释不能跨行; 以"/*"开始,以"*/"结束的块式注释。这种注释可以包含多行内容。编译系统在发现一个"/*"后,会开始找注释结束符"*/",把两者间的...

2019-12-09 21:13:01 224

空空如也

空空如也

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

TA关注的人

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