自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 STM32串口协议概念及结构体初始化详解+串口点灯+串口收发程序

文章目录一、串口通信协议简介1.RS232标准2.USB转串口3.原生的串口到串口二、初始化结构体解1.USART初始化结构体2.同步时钟初始化结构体3.编程时需要用到的固件库函数三、串口点灯代码实现1.USART .C文件2.USART.H文件3.MAIN.C四、串口收发程序代码实现1.USART .C文件2.USART.H文件3.MAIN.C一、串口通信协议简介物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬件部分。协议层:协议层主要规定通讯逻辑,统.

2020-12-11 15:00:44 1739

原创 STM32中断NVIC的概念及中断编程步骤

文章目录前言一、NVIC 简介1.NVIC 寄存器简介2.NVIC 中断配置固件库二、 优先级的定义1.优先级定义2. 优先级分组三、中断编程步骤1.使能外设某个中断2.初始化 NVIC_InitTypeDef 结构体3.编写中断服务函数前言STM32中断非常强大,每个外设都可以产生中断提示:以下是本篇文章正文内容一、NVIC 简介NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。1.NVIC 寄存器简介NVIC 结构体定义,来自固件.

2020-12-11 14:45:10 2112 1

原创 STM32外部中断事件控制器EXTI概念及使用方法

文章目录前言一、EXTI功能框图二、使用方法1.EXTI_InitTypeDef 初始化结构体2.实现步骤三、代码实现1.EXTI .C文件2.EXTI .H文件2.MAIN.C前言EXTI: External interrupt / event controller外部中断/事件控制器提示:以下是本篇文章正文内容一、EXTI功能框图二、使用方法1.EXTI_InitTypeDef 初始化结构体1-EXTI_Line:用于产生中断/事件线2-EXTI_Mode : EXTI模式(中.

2020-12-11 14:33:46 2253 1

原创 通信方式的基本概念:串行与并行通信 全双工、半双工和单工 同步与异步 通信的速率

通信的基本概念在计算机的设备与设备之间或集成电路之间常常需要进行数据传输,这里简答介绍这些通信的基本概念。1.串行与并行通信2.全双工、半双工和单工3.同步与异步在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。4.通信的速率...

2020-12-11 14:24:25 1331

原创 STM32系统时钟RCC工作流程详解+配置函数中文注释+使用HSE代码配置流程

文章目录前言一、时钟树二、工作流程1.配置外部高速时钟HSE2.配置锁相环PLL时钟源3.配置锁相环PLL倍频因子得PLL 时钟 PLLCLK4.配置系统时钟 SYSCLK5.配置AHB总线分频因子6.配置APB1总线分频因子7.配置APB2总线分频因子三、收获1.系统时钟的配置逻辑2. CSS时钟安全系统的作用前言STM32时钟工作流程详解提示:以下是本篇文章正文内容一、时钟树二、工作流程1.配置外部高速时钟HSEHSE 是高速的外部时钟信号,可以由有源晶振或者无源晶振提供,频率从.

2020-12-10 16:26:05 708

原创 STM32启动文件执行步骤分析

一、启动文件简介启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作:1、初始化堆栈指针 SP=_initial_sp2、初始化 PC 指针=Reset_Handler3、初始化中断向量表4、配置系统时钟5、调用 C 库函数_main 初始化用户堆栈,从而最终调用 main 函数去到 C 的世界二、启动文件代码讲解1.Stack—栈1 Stack_Size EQU 0x0000040023 AREA STACK, NOINIT, READWRITE, ALIGN=3

2020-12-10 12:20:17 1046 1

原创 STM32位带操作实现GPIO输入输出

文章目录前言一、示意图二、位带区1.外设位带区2.SRAM 位带区3.统一公式三、GPIO 位带操作1.GPIO 寄存器映射2. GPIO 位操作3. 主函数四、下载验证五、收获1.初学者写一部分代码,编译一部分, 不要等到写完一起编译。2.位带操作可以实现操作寄存器的某一位不改变其他位。前言位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。51 单片机中通过关键字 sbit 来实现位定义,STM32 没有这样的关键字,而是通过访问位带别名区来实现。提示:以下是本篇文章正文.

2020-12-09 17:59:18 1207 1

原创 STM32固件库实现按键控制

文章目录前言一、原理图二、软件设计三、代码1.按键引脚宏定义2. 按键 GPIO 初始化函数3. 检测按键的状态4. 主函数四、下载验证五、收获1.程序如何换行2.异或^前言使用固件库实现按键控制LED提示:以下是本篇文章正文内容一、原理图从按键的原理图可知,这些按键在没有被按下的时候,GPIO 引脚的输入状态为低电平(按键所在的电路不通,引脚接地),当按键按下时,GPIO 引脚的输入状态为高电平(按键所在的电路导通,引脚接到电源)。只要我们检测引脚的输入电平,即可判断按键是否被按下。电.

2020-12-09 14:37:59 1087 3

原创 STM32固件库实现点亮LED

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、原理图二、软件设计三、代码1.LED 灯引脚宏定义2. 控制 LED 灯亮灭状态的宏定义3. LED GPIO 初始化函数4. 主函数四、下载验证五、收获1.如何防止头文件重复包含2.注释规范前言使用固件库点亮LED提示:以下是本篇文章正文内容一、原理图二、软件设计在工程之上新建“bsp_led.c”及“bsp_led.h”文件,,这些文件不属于STM32 标准库的内容,是由我们自己根据应用需要编写的,编程

2020-12-09 11:52:42 1001 3

原创 STM32新建keil工程具体步骤(详细)

1. 新建本地工程文件夹们在本地电脑上新建一个“工程模板”文件夹,在它之下再新建 6 个文件夹:2.添加库文件到相应文件夹3.KEIL5新建工程打开 KEIL5,新建一个工程,文件名自拟,工程放在Project目录下。保存后弹出芯片选择,要根据自己芯片的型号提前按照PACK包,选择型号后点击OK。随后弹出在线添加库文件,关闭即可。4.添加组文件夹在新建的工程中添加常用的文件夹,用来存放不同的文件。5.添加文件把 ST 标准库必要的文件复制到工程模版对应文件夹的目录下标题

2020-12-09 10:49:20 11243 6

原创 STM32从写内存到寄存器映射点亮LED

写内存寄存器映射(1)通过绝对地址的强制类型转换。寄存器映射(2)定义寄存器结构体,把外设基地址通过强制类型转换,转换成相应外设的结构体指针。这样就可以通过外设基地址访问结构体成员来操作外设寄存器。寄存器映射(3)提高可读性,编写端口的置位复位函数,两个形参。寄存器映射(4)定义初始化结构体,把能够涉及到配置到的寄存器参数全部枚举出,例如速度、模式。使用时可以把枚举出的变量写到初始化结构体里,最后调用外设的初始化函数 ,把结构体里配置好的成员写到相应的寄存器里,实现配置寄存器。

2020-12-08 11:56:11 144 1

原创 STM32固件库文件含义解析

1-汇编编写的启动文件startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、对用C库函数_main最终去到C的世界2-时钟配置文件system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M。3-外设相关的stm32f10x.h:实现了内核之外的外设的寄存器映射xxx:GPIO、USRAT、I2C、SPI、FSMCstm32f10x_xx.c:外设的驱动函数库文件stm32f10x_xx.h:存放外设的初始化结构体,

2020-12-08 11:21:09 1131 1

原创 STM32使用寄存器点亮LED

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、什么是寄存器?二、STM32寄存器映射1.总线基地址2.GPIO基地址3.GPIOB端口寄存器列表4.GPIOx端口数据输出寄存器ODR描述三、C语言对寄存器的封装1.C语言对寄存器的封装2.实现让PBO输出低/高电平3.使用结构体封装寄存器列表4.使用结构体指针访问寄存器5.定义GPIO端口基地址指针三、使用寄存器点亮LED1.GPIO简介2.推挽输出3.开漏输出4.GPIO输出初始化顺序5.具体代码5.实验现象总结前

2020-12-08 11:19:07 1192 1

原创 单片机的四种烧写方式

JTAG/SWD/ISP/SWIM详解单片机的四种烧写方式单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前,要先清楚单片机程序是如何烧写到单片机内部的,在烧写的过程中需要用到什么工具?因为不通用的烧写工具可能价格较贵,比如说Micorchip单片机使用的ICD系列编程器,单台价格在600-1000元人民币之间。今天和大学来认识一下单片机

2020-11-27 20:05:12 5263 1

原创 STM32的八种GPIO模式

STM32有八种IO口模式,分别是:模拟输入、浮空输入、上拉输入、下拉输入、开漏输出、推挽输出、复用开漏输出和复用推挽输出。1、模拟输入GPIO_Mode_AIN模拟输入,即关闭施密特触发器,将电压信号传送到片上外设模块(不接上下拉电阻)。2、浮空输入GPIO_Mode_IN_FLOATING浮空输入。浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。3、上下拉输入GPIO_Mode_IPD下拉输入,GPIO_Mode_IPU上拉

2020-11-27 10:06:32 1028 1

原创 单片机是嵌入式的子类

1系统组成结构上的区别(1)单片机基本结构单片机由运算器、控制器、存储器、输入输出设备构成。(2)嵌入式系统成部分嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序组成。嵌入式系统设计的第一步是结合具体的应用,综合考虑系统对成本、性能、可扩展性、开发周期等各个方面的要求,确定系统的主控器件,并以之为核心搭建系统硬件平台。2 硬件组成上的区别单片机是在一块集成电路芯片中包含了微控制器电路,以及一些通用的输入输出接口器件。从构成嵌入式系统的方式看,根据现代电子技术发展水平

2020-11-27 10:03:39 1124 1

原创 C语言下的2048小游戏

游戏实现原理:1.使用终端图形库文件curses绘制终端里的图形。2.使用一个二维数组保存4 x 4 空格中的变量。键盘输入控制移动,经过逻辑判断,二维数组数据变化。3.二维数组数据变化后交给图形函数显示出来。库文件curses介绍:curses是一种终端图形绘制库,利用curses可以在终端中绘制多种图形。简单demo#include <stdio.h>#include <curses.h>int main(){initscr();border(0,0,0,

2020-11-27 10:02:16 140 1

原创 Linux中最重要的命令

Linux包含大量命令,但是我们从这里选择了37个最重要的命令。 学习这些命令,您将在Linux命令提示符下有更多的家。下面的列表按字母顺序显示。 命令在列表中的位置并不代表其有用或简单。 有关命令用法的最终字词,请参阅其手册页。 man命令当然在我们的列表中,它是“ manual”的缩写。1.别名使用alias命令可以给命令或命令序列指定自己的名称。 然后,您可以输入您的短名称,外壳程序将为您执行命令或命令序列。别名cls = clear这将设置一个名为cls的别名。 这将是clear的另一个名

2020-11-27 09:50:18 600 1

原创 C语言编程的步骤

C是一种编译性语言。如果你以前从来没有接触过任何的编程语言,那么你则需要学习一下一个拆分的逻辑思维。当我们想要写一个项目或者软件的时候,我们需要把这个整体拆分为7个步骤,这样也会让你的思路看起来更有条理。当然啦,这是最完美的状态。然而在实际操作中,并且是在较大的项目中,你可能需要做一些反复工作,用后一步骤所了解到的内容来改进前一个步骤。第1步: 定义程序目标当你在开始写程序之前,你应对希望程序要做什么有一个清晰的想法。考虑程序需要的信息,程序需要进行的计算和操作,以及程序应该向你报告的信息。在这一规

2020-11-27 09:19:17 5778 2

原创 单片机原理概念

单片机执行指令我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令。那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM

2020-11-27 08:58:08 433 1

原创 STM32 NRF24L01实现无线传输

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、原理图1.STM32F103C8T62.NRF24L01二、使用步骤1.引入库2.读入数据总结前言STM32下NRF24L01实现无线传输一、原理图1.STM32F103C8T62.NRF24L01NRF24L01是 nordic 的无线通信芯片,它具有以下特点:1) 2.4G 全球开放的 ISM 频段(2.400 - 2.4835GHz),免许可证使用;2)最高工作速率 2Mbps,高校的 GFSK

2020-10-19 14:00:58 4829 7

原创 Linux下贪吃蛇小游戏

一、编译过程编译时使用终端,gcc 文件名 -lcurses二、代码#include<curses.h>#include<stdlib.h>#define UP 1#define DOWN -1#define LEFT 2#define RIGHT -2struct snake{ int hang; int lie; struct snake *next;};struct snake *head= NULL;struct snak

2020-10-19 13:51:52 408 9

原创 STM32Keil下编程实现蜂鸣器长鸣

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、原理图1.STM32F103C8T62.BELL蜂鸣器二、Keil代码1.Beep.c2.Beep.h3.main.c总结前言基于STM32F103C8T6在Keil下编程实现蜂鸣器的长鸣一、原理图1.STM32F103C8T6STM32F103C8T6是ST在2007年发布的一款MCU,截止目前ST已经发布了速度高达400MHz的STM32H7。三点好处,一是封装比较大,方便初学者焊接,二是价格低廉,学习成本

2020-10-07 11:08:31 12946 9

原创 STM32 Keil下编程实现LED灯点亮与闪烁

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、原理图1.STM32F103C8T62.LED23.LED3二、Keil代码1.Led.h2.Led.c3.main.c总结前言基于STM32F10C8T6在Keil下编程实现LED灯点亮与闪烁一、原理图1.STM32F103C8T6STM32F103C8T6是ST在2007年发布的一款MCU,截止目前ST已经发布了速度高达400MHz的STM32H7。三点好处,一是封装比较大,方便初学者焊接,二是价格低廉,学习

2020-10-06 19:15:28 20174 3

原创 WeMos下实现小车避障与手机控制

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、项目软硬件平台及开发环境1.硬件平台介绍2.开发环境介绍3.开发环境配置支持Wemos二、驱动演示1.蜂鸣器2.Wemos串口通信3.Wemos和wifi4.Wemos和超声波测距5.Wemos和L9110s步进电机控制器6.安卓APP控制小车三、项目整合总结前言通过WeMos D1开发板、超声波模块、蜂鸣器、L9110s步进电机实现:小车方向控制,如果小车距离障碍物的距离小于10厘米 ,再按前进蜂鸣器就会报警,并后退

2020-10-02 10:17:45 2149 6

原创 WeMos下实现垃圾桶感应开盖、保持、合盖

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、项目软硬件平台及开发环境二、代码实现1.相关函数2.代码整合总结前言这个项目是Wemos下的基础模块,利用超声波模块和舵机实现垃圾箱盖子的自动开合。一、项目软硬件平台及开发环境1.1、硬件平台特性1.基于ESP-8266EX2.Arduino兼容,使用rduino IDE来编程3.11 x I/O 引脚4.1 x ADC 引脚(输入范围0-3.3V)5.板载5V 1A开关电源(高输入电压24V)工作

2020-10-02 09:45:51 2134 2

GUI-LittlevGL教程

littleVGL 可以说是这 2 年才刚开始流行的一个小型开源嵌入式 GUI 库,具有界面精美,消耗资源小,可移植度高,响应式布局等特点,全库采用纯 c 语言开发,以实现最大的兼容性,模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计。通过学习littlevGL,分享以下使用方法,本文从移植、模拟器、对象、标签、样式、字体、容器、按钮、事件等9个方面介绍介绍littlevGL的使用方法。

2020-12-10

结构思考力 学习总结

学习完结构思考力,我感受到结构化思考的魅力,感受到思维清晰、结构化表达对生活工作的帮助,下面我从学习之前和学习之后两个方面举例说明我的收获。

2020-12-10

空空如也

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

TA关注的人

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