随笔分类 - 野火指南者例程
第20章 AT24C02存储小数
摘要:第二十章 AT24C02存储小数 1. 硬件设计 参考第18章 硬件I2C实验 2. 软件设计 2.1 编程大纲 定义小数和长整数的数组和地址 主函数测试读写小数和长整数 2.2 代码分析 这里就主要讲解主函数啦,因为其他部分是和硬件I2C一样的 #include "stm32f10x.h" #in
第19章 模拟I2C
摘要:第十九章 模拟I2C 1. 硬件设计 我们使用GPIO来模拟I2C,无其他硬件资源 2. 软件设计 2.1 编程大纲 模拟I2C宏定义配置 根据时序模拟I2C 沿用上一节的EEPROM读写代码 主函数测试 2.2 代码设计 2.2.1 模拟I2C宏定义 #define I2C_WR 0 // 写控制
第18章 硬件I2C
摘要:第十八章 硬件I2C EEPROM是一种掉电后数据不丢失的存储器,常用来存储一些配置信息,以便系统重新上电的时候加载之。 EEPOM芯片最常用的通讯方式就是I2C协议, 本小节以EEPROM的读写实验为大家讲解STM32的I2C使用方法。 实验中STM32的I2C外设采用主模式,分别用作主发送器和主
第17章 DMA外设到存储器实验
摘要:第十七章 DMA外设到存储器实验 1. 硬件设计 外设到存储器使用到USART1功能,具体电路设置参考USART章节,无需其他硬件设计。 2. 软件设计 2.1 编程大纲 配置USART通信功能; 设置串口DMA工作参数; 使能DMA; DMA传输同时CPU可以运行其他任务。 2.2 代码分析 2.
第16章 DMA存储器到外设模式实验
摘要:第十六章 DMA存储器到外设模式实验 1. 硬件设计 存储器到外设模式使用到USART1功能,具体电路设置参考USART章节,无需其他硬件设计。 2. 软件设计 2.1 编程大纲 配置USART通信功能 设置串口DMA工作参数 使能DMA DMA传输同时CPU可以运行其他任务 2.2 代码分析 2.
第15章 DMA存储器到存储器模式实验
摘要:第十五章 DMA存储器到存储器模式实验 1. 硬件设计 存储器到存储器模式可以实现数据在两个内存的快速拷贝。我们先定义一个静态的源数据,存放在内部FLASH, 然后使用DMA传输把源数据拷贝到目标地址上(内部SRAM),最后对比源数据和目标地址的数据,看看是否传输准确 。 DMA存储器到存储器实验不
第14章 USART 2&3&4&5接发通信实验
摘要:第十四章 USART 2&3&4&5接发通信实验 1. 硬件设计 参考第十二章 USART1接发通信实验 2. 软件设计 2.1 USART2宏定义 具体细节可以参考USART1,如果我们要使用其他串口,稍微改一下配置就行了,下面我们以USART2为例 // USARTx 引脚宏定义 #define
第13章 USART1指令控制RGB彩灯实验
摘要:第十三章 USART1指令控制RGB彩灯实验 1. 硬件设计 同前一章实验和已经介绍过的led 2. 软件设计 2.1 编程大纲 初始化配置RGB彩色灯GPIO; 使能RX和TX引脚GPIO时钟和USART时钟; 初始化GPIO,并将GPIO复用到USART上; 配置USART参数,使能USART;
第12章 USART1接发通信实验
摘要:第十二章 USART1接发通信实验 1. 硬件设计 为利用USART实现开发板与电脑通信,需要用到一个USB转USART的IC,我们选择CH340G芯片来实现这个功能,CH340G是一个USB总线的转接芯片, 实现USB转USART、USB转lrDA红外或者USB转打印机接口,我们使用其USB转US
第11章 SysTick实验
摘要:第十一章 SysTick定时实验 1. 硬件设计 SysTick属于单片机内部的外设,不需要额外的硬件电路,剩下的只需一个LED灯即可。 2. 软件设计 2.1 编程大纲 设置重装寄存器的值(10us) 编写10us级延时函数、继续编写us级、ms级 配置SysTick中断函数 在主函数测试:流水灯
第10章 EXTI控制实验
摘要:第十章 EXTI控制实验 1. 硬件设计 轻触按键在按下时会使得引脚接通,通过电路设计可以使得按下时产生电平变化 2. 软件设计 2.1 编程大纲 配置EXTI初始化 配置NVIC初始化 编写中断函数 主函数应用 2.2 代码分析 2.2.1 初始化用来产生中断的GPIO,初始化EXTI #ifnd
第9章 RCC时钟配置-MCO输出
摘要:第九章 RCC-MCO输出 1. 使用HSE 一般情况下,我们都是使用HSE,然后HSE经过PLL倍频之后作为系统时钟。通常的配置是:HSE=8M,PLL的倍频因子为:9, 系统时钟就设置成:SYSCLK = 8M * 9 = 72M。使用HSE,系统时钟SYSCLK最高是128M。我们使用的库函数
第8章 GPIO-位带操作
摘要:第八章 GPIO-位带操作 1. 位带简介 位操作就是单独的对一个比特位读和写,在51单片机里我们见到过很多次了(sbit实现位定义,比如sbit LED1 = P2^0啦)但是STM32没有这样的关键字,所以通过访问位带别名区来实现。 在STM32中,有两个地方实现了位带,一个是SRAM区的最低1
第7章 GPIO输入-按键控制LED
摘要:第七章 GPIO输入-按键控制LED 1. 硬件设计 本章我们用到的硬件是-机械按键开关。在51单片机里我们已经学过了。此出再强调一下消抖。 按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开, 使用按键时会产生带波纹信号,需要用软件消抖处理滤波,不方便输入检测。本实
第6章 GPIO输出-使用标准库控制LED
摘要:第六章 GPIO输出-使用标准库控制LED 1. 硬件设计 在开发板上面与LED的连接见图,这是一个RGB灯,里面由红蓝绿三个小灯构成, 使用PWM控制时可以混合成256不同的颜色。 2. 软件设计 2.1 编程大纲 使能GPIO端口时钟; 初始化GPIO目标引脚为推挽输出模式; 编写简单测试程序,
第5章 蜂鸣器实验
摘要:第五章 蜂鸣器实验 1. 硬件设计 我们开发板上面使用的有源蜂鸣器,图中BEEP1: 蜂鸣器分无源和有源两种,从电路上来看,这两种蜂鸣器在这都可以工作,区别是单片机程序不一样。 当节点Beep为高电平时,三极管Q4截止,蜂鸣器无电流,不响。 当节点Beep为低电平时,三极管Q4导通,蜂鸣器有电流,会
第4章 新建工程-标准库版本
摘要:第四章 新建工程-标准库版本 1. 硬件设计 工程模板,没有硬件设计 2. 软件设计 #include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h> int main(void) { // 来到这里的时候,系统的时钟已经被配置成72M。 } 3. 小结
第3章 寄存器点亮三个LED
摘要:第三章 寄存器点亮三个LED 1. 硬件设计 硬件设计同上一个实验,我们直接分析代码就好了。 2. 软件设计 #include "stm32f10x.h" int main(void) { // 点亮LED1 // 1.开启GPIOB 端口时钟 RCC_APB2ENR |= (1<<3); // 2
第2章 使用寄存器点亮LED
摘要:第二章 我们的第一个实验-用寄存器点亮LED 1. 硬件设计 在本教程中STM32芯片与LED灯的连接见图, 这是一个RGB灯,里面由红蓝绿三个小灯构成,使用PWM控制时可以混合成256不同的颜色。 由图可知,3个LED灯的阳极引出连接到3.3V电源,阴极通过限流电阻引入至STM32的3个GPIO引
第1章 新建工程模板
摘要:第一章 新建工程模板 参考:7. 新建工程—寄存器版 — [野火]STM32库开发实战指南——基于野火指南者开发板 文档 (embedfire.com) 1. 新建工程 1.1 新建本地工程文件夹 为了方便后期维护和工程目录清晰(参考51单片机模块化编程),我们在电脑本地新建一个文件夹用来存放整个工