自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 28-串口发送和接收实验

USB转串口--需要驱动总结:在stm32单片机编程中,以下方法对于单片机编程尤为重要1)掌握不同库函数的使用方法;2)弄清楚编程步骤。库函数实际上就是对寄存器进行了一系列的封装,其本质上都是对芯片的...

2022-04-25 10:53:47 1568

原创 27-串口函数初始化介绍

使用固件库编程进行初始化,有很多寄存器,每个寄存器有很多位。如何知道从哪里开始,要初始化那些位?1:找到相应的外设C文件----找到头文件----他的头文件里面有初始化结构体----在编程的时候只需要编辑这些成员就可以----成员配什么值,怎么配置,看里面的描述2*:串口时钟初始化在同步通信中配置,异步通信不需要。1)CPOL---时钟的极性,控制无信号时电平的表示方法2)CPHA---时钟的相位,控制在时钟的第一个变化沿或者第二个变化沿捕获数据3:在编程时重点操作这个结构体:

2022-04-24 10:04:37 2087

原创 26-串口功能框图

5:包含以下部分一:引脚6:引脚串口引脚:TX;RX;SW_RX(智能卡模式);nRTS;nCTS;(硬件流)SCLK(时钟)7:串口发送,把数据打包成帧;二:数据寄存器8:TDR发送数据寄存器---发送移位寄存器---TX标志位1:Transmit data register empty(发送数据寄存器为空)---把这个中断打开了(这个时候会产生中断 ) 标志位2:发送完成---相应的中断9:读数据只有一个标志位会发生变化...

2022-04-23 20:02:10 515

原创 L7-串口通信简单实现

软件标准UART协议;同样的的VI可以用于232,485,4221:基于单片机与虚拟串口软件2:具体仪器控制3:控制显示屏4:控制PLC5:仪器控制总结单片机程序原理循环发送1,2,250msA0$;继电器1关闭,1打开,$为结束符 ...

2022-04-23 15:32:04 121

原创 L6-虚拟串口

5-串口虚拟软件虚拟出两个串口,程序编写测试6:查看串口 7:正常显示与16进制显示问题1:字符与二进制数字之间怎么转换问题2:汉字与二进制数字之间怎么转换问题3:其他语言与二进制数字之间怎么转换...

2022-04-20 17:15:26 47

原创 L5-总线的概念--串口通信简介

目录一:总线的概念二:串口通信简介一:总线的概念5总线:总线是一组用于计算机之间或计算机各部件之间进行数据和命令的传送的公用信号线。6三大类型关系:大小区分:芯片,模块,计算机7三种标准:总线是面对现场设备的数据交换,它主要由电气标准,机械标准和通讯标准三大部分构成。8通讯协议:而通讯协议呢,其实就是通讯标准,是设备之间进行数据交换的规约,也就是说A和B设备交换数据的时候,A设备发出的数据可能是先寻址,然后再握手,然后在数据发送等等,然后B设备必须要知道A的发送规则才.

2022-04-20 11:05:57 701

原创 24-通信的基本概念

串口;I2C;spi;Fsmc同步: 时钟线异步:不需要时钟线总结:1:串行通信;并行通信2:全双工;半双工;单工3:异步(校验);同步(多一根线)4:通信速率(波特率)(比特率)...

2022-04-19 17:01:05 146

原创 20-系统时钟配置函数

汇编语言,用分号注释__main,C库函数 ,HSE:外部时钟HSI:内部时钟,当HSE故障时使用PLLCLK锁相环:将低速时钟倍频成高速时钟

2022-04-17 12:29:23 278

原创 19-位带操作

1:以下地址有位带别名区 :0x400F FFFF----0x4000 0000别名区对应的地址在:0x43FF FFFF----0x4200 0000 下面同理APB1 APB2 AHB1总线上的外设 有操作寄存器对应的别名去地址;对地址操作:指针+adr(别名区地址)=0;实现位带操作:地址转换转换的过程中,一个位会膨胀位4个字节...

2022-04-16 18:55:50 81

原创 18-分析固件库文件目录和文件的作用

固件库就是函数的集合,固件是程序,1MFLASH,操作最底层设备。

2022-04-14 11:08:06 145

原创 17-从零写库函数3

1:首先构建结构体typedef struct{ uint32_t MODER;//moder在配置时,只有4种值,然而uint32_t可以表示2^32种数值 //为了防止配置结构体取值错误,这里对MODER的取值进行了限定 uint32_t PUPDR; uint32_t OTYPER; uint32_t OSPEEDR; }GPIO_InitTypeDef;2:在C语言中限制结构体成员的值,用enum这种结构体在enum中,用逗号隔开,最后一个不加逗号type

2022-04-13 21:21:35 126

原创 16-从零自己写库函数(2)外设结构体定义

如何写BSRR的置位----复位的库函数:1:在最初的时候需要先定义GPIO的结构体#ifndef _STM32F4XX_H#define _STM32F4XX_H#include <stdint.h>#define GPIOF_BASE ((unsigned int)0x40021400)#define RCC_BASE ((unsigned int)0x40023800) #define GPIOF_MODER *(unsigned int *)(GPIOF_BA

2022-04-13 11:11:57 197

原创 15-自己写库函数构建库函数雏形

寄存器编程---是如何过渡到固件库1:头文件#ifndef _STM32F4XX_H#define _STM32F4XX_H#include <stdint.h>#define GPIOF_BASE ((unsigned int)0x40021400)#define RCC_BASE ((unsigned int)0x40023800) #define GPIOF_MODER *(unsigned int *)(GPIOF_BASE+0x00)//把这个数加(unsi

2022-04-12 21:30:09 129

原创 14-寄存器点亮LED-从0开始写代码

1:main.c文件#include "stm32f4xx.h"void delay(unsigned int a){for( ;a>0;a--);}int main (void){ //第一步:开GPIOF端口时钟 RCC_AHB1ENR |=(1<<5); //第二部:配置GPIO为输出 GPIOF_MODE &=~(3<<(2*9)); GPIOF_MODE |=(1<<(2*9));//如果在配置时之前就已经配置过

2022-04-12 20:12:25 207

原创 13-GPIO功能框图

今天学习了GPIO的功能框图,总结一下stm32f407 GPIO的功能框图控制GPIO的寄存器有以下几种1:GPIOx_MODER:控制端口输入输出模式2:GPIOx_OTYPER:端口输出类型寄存器,输出开漏3:GPIOx_OSPEEDR4:GPIOx_PUPDR5:GPIOx_IDR6:GPIOx_ODR7:GPIOx_BSSR8:GPIOx_LCKR9:GPIOx_AFRL10:GPIOx_AFRHGPIOx_ODR寄存器,当使用该寄存器配置输出.

2022-04-12 15:40:41 3246

原创 13-寄存器编写程序入门

与51单片机对比,32单片机控制寄存器要复杂的多;在51单片机中,可以直接控制端口的高低电平;然而32单片机却不可以,因为32为了减小功耗,默认情况下这些时钟都是关闭的,需要打开才能使用;同时它的使用模式也有多种;只用在配置好端口之后才能进行控制。1:下面以stm32单片机为例:初步学习通过寄存器控制GPIO的方法:#include "stm32f4xx.h"int main (){ //有很多外设,默认情况下这些外设时钟都是关闭的 //降低功耗,有专门的外设控制,复位时钟控制 //A

2022-04-11 22:25:18 1376 1

原创 12-建立工程

1:空白文件夹--芯片型号--寄存器版不需要继续选择--建立.c文件--建立.h文件--添加.c.h的文件;2:选择chineseGB23123:字体大小选着4: 启动文件的作用5:Jlink的链接方法,设置方法

2022-04-11 21:50:03 46

原创 11-C语言对寄存器的封装

1:仅通过指针进行封装//在基地址基础上加上偏移地址#define GPIOF_BASE (0x40021400)#define GPIOF_BASE (0x40021400)#define GPIOF_BASE (0x40021400)#define GPIOF_BASE (0x40021400)#define GPIOF_BASE (0x40021400)#define GPIOF_BASE (0x40021400)#define GPIOF_MODER *(unsign.

2022-04-11 16:38:55 814

原创 10-寄存器映射

1:51单片机资源很少,然而32端口较多不适合j寄存器映射2:如何辨别方向:逆时针增长,小点到大点3:最多访问32G内核放在32GB—7个块4:寄存器映射对芯片里面的某个具有特殊功能的内存单元,取一个别名的过程。为了方便阅读采用寄存器的名字命名----寄存器映射//例如在51单片机中, sfr PA0=0x80;//关键字定义 PA0=1;//在32单片机中#define GPIOF_DDR *(unsigned int *) 0x40021414

2022-04-11 14:53:54 505

原创 9-转义字符-注释-函数-数组

转义字符串:转变了原来的意思整形%d 字符%c 字符串%s函数:特点简化代码,代码反复利用;函数类型+名称+函数访问的入口参数+函数内容+返回值数组:数组访问方法:每个元素有下标0---n;操作符:整数除小数结果依然是整数;小数除以小数结果位小数;操作符后面的括号可以省略;算数操作符+移位操作符+赋值操作符+单目操作符+关系操作符+逻辑操作符+条件操作符+......单目操作符:...

2022-04-10 09:13:14 162

原创 C8-作用域,生命周期,常量,枚举常量,字符串

作用域:作用于自己所在的大括号局部变量的作用域:就是变量所在的局部范围 全局变量的作用域:整个工程 代码都得写在函数里面去(大括号里面)生命周期:变量的创建和销毁之间的时间段局部变量的生命周期:进入局部范围开始---出局部范围结束 全局变量的生命周期:程序的生命周期调节字体:工具--选项--字体;行号常量:1.字面常量2.const修饰的产变量const 修饰的常变量:不能被修改(常属性)3.#define定义的标识符常量#define MAX 10000

2022-04-05 15:40:07 202

原创 C7-如何学好C语言

1:必须实践--敲代码2:画图理解--内存布局3:调试!调试!课本推荐:

2022-04-04 22:10:51 753

原创 C6-数据类型-变量常量-scanf使用

1:数据类型char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数计算每种数据类型的大小printf("%d\n", sizeof(char));2:变量和常量1)全局变量:在中括号外面2)局部变量:在中括号里面2.1变量的使用#include int ...

2022-04-04 16:35:59 782

原创 C5-VS创建新项目

1、空项目2、名称-》位置3、源文件-》添加-》新建资源管理器:a、视图-》解决方案资源管理器(调出资源管理器)最简单的C语言:a、库函数--》函数返回类型--》函数名--》函数体...

2022-04-04 12:17:52 749

翻译 SysTick定时器

使用平台stm32f4/f1;在CM3CM4中都有该定时器;用来作延时,或者实时系统的心跳时钟。可以节约MCU资源,不用浪费一个定时器。Systick是一个24位的倒计数定时器,计到0时,将从RELOAD寄存器中自动重装载定时器初值。只要不把sysTick控制及状态寄存器的使能位清除,就永不停息。即使在睡眠中也能工作。a)SysTick定时器捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。b)SysTick中断优先级可以设置SysTick中组要有...

2022-04-03 17:13:16 2968

空空如也

空空如也

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

TA关注的人

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