28-串口发送和接收实验 USB转串口--需要驱动总结:在stm32单片机编程中,以下方法对于单片机编程尤为重要1)掌握不同库函数的使用方法;2)弄清楚编程步骤。库函数实际上就是对寄存器进行了一系列的封装,其本质上都是对芯片的...
27-串口函数初始化介绍 使用固件库编程进行初始化,有很多寄存器,每个寄存器有很多位。如何知道从哪里开始,要初始化那些位?1:找到相应的外设C文件----找到头文件----他的头文件里面有初始化结构体----在编程的时候只需要编辑这些成员就可以----成员配什么值,怎么配置,看里面的描述2*:串口时钟初始化在同步通信中配置,异步通信不需要。1)CPOL---时钟的极性,控制无信号时电平的表示方法2)CPHA---时钟的相位,控制在时钟的第一个变化沿或者第二个变化沿捕获数据3:在编程时重点操作这个结构体:
26-串口功能框图 5:包含以下部分一:引脚6:引脚串口引脚:TX;RX;SW_RX(智能卡模式);nRTS;nCTS;(硬件流)SCLK(时钟)7:串口发送,把数据打包成帧;二:数据寄存器8:TDR发送数据寄存器---发送移位寄存器---TX标志位1:Transmit data register empty(发送数据寄存器为空)---把这个中断打开了(这个时候会产生中断 ) 标志位2:发送完成---相应的中断9:读数据只有一个标志位会发生变化...
L7-串口通信简单实现 软件标准UART协议;同样的的VI可以用于232,485,4221:基于单片机与虚拟串口软件2:具体仪器控制3:控制显示屏4:控制PLC5:仪器控制总结单片机程序原理循环发送1,2,250msA0$;继电器1关闭,1打开,$为结束符 ...
L6-虚拟串口 5-串口虚拟软件虚拟出两个串口,程序编写测试6:查看串口 7:正常显示与16进制显示问题1:字符与二进制数字之间怎么转换问题2:汉字与二进制数字之间怎么转换问题3:其他语言与二进制数字之间怎么转换...
L5-总线的概念--串口通信简介 目录一:总线的概念二:串口通信简介一:总线的概念5总线:总线是一组用于计算机之间或计算机各部件之间进行数据和命令的传送的公用信号线。6三大类型关系:大小区分:芯片,模块,计算机7三种标准:总线是面对现场设备的数据交换,它主要由电气标准,机械标准和通讯标准三大部分构成。8通讯协议:而通讯协议呢,其实就是通讯标准,是设备之间进行数据交换的规约,也就是说A和B设备交换数据的时候,A设备发出的数据可能是先寻址,然后再握手,然后在数据发送等等,然后B设备必须要知道A的发送规则才.
24-通信的基本概念 串口;I2C;spi;Fsmc同步: 时钟线异步:不需要时钟线总结:1:串行通信;并行通信2:全双工;半双工;单工3:异步(校验);同步(多一根线)4:通信速率(波特率)(比特率)...
19-位带操作 1:以下地址有位带别名区 :0x400F FFFF----0x4000 0000别名区对应的地址在:0x43FF FFFF----0x4200 0000 下面同理APB1 APB2 AHB1总线上的外设 有操作寄存器对应的别名去地址;对地址操作:指针+adr(别名区地址)=0;实现位带操作:地址转换转换的过程中,一个位会膨胀位4个字节...
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
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
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
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));//如果在配置时之前就已经配置过
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寄存器,当使用该寄存器配置输出.
13-寄存器编写程序入门 与51单片机对比,32单片机控制寄存器要复杂的多;在51单片机中,可以直接控制端口的高低电平;然而32单片机却不可以,因为32为了减小功耗,默认情况下这些时钟都是关闭的,需要打开才能使用;同时它的使用模式也有多种;只用在配置好端口之后才能进行控制。1:下面以stm32单片机为例:初步学习通过寄存器控制GPIO的方法:#include "stm32f4xx.h"int main (){ //有很多外设,默认情况下这些外设时钟都是关闭的 //降低功耗,有专门的外设控制,复位时钟控制 //A
12-建立工程 1:空白文件夹--芯片型号--寄存器版不需要继续选择--建立.c文件--建立.h文件--添加.c.h的文件;2:选择chineseGB23123:字体大小选着4: 启动文件的作用5:Jlink的链接方法,设置方法
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.
10-寄存器映射 1:51单片机资源很少,然而32端口较多不适合j寄存器映射2:如何辨别方向:逆时针增长,小点到大点3:最多访问32G内核放在32GB—7个块4:寄存器映射对芯片里面的某个具有特殊功能的内存单元,取一个别名的过程。为了方便阅读采用寄存器的名字命名----寄存器映射//例如在51单片机中, sfr PA0=0x80;//关键字定义 PA0=1;//在32单片机中#define GPIOF_DDR *(unsigned int *) 0x40021414
9-转义字符-注释-函数-数组 转义字符串:转变了原来的意思整形%d 字符%c 字符串%s函数:特点简化代码,代码反复利用;函数类型+名称+函数访问的入口参数+函数内容+返回值数组:数组访问方法:每个元素有下标0---n;操作符:整数除小数结果依然是整数;小数除以小数结果位小数;操作符后面的括号可以省略;算数操作符+移位操作符+赋值操作符+单目操作符+关系操作符+逻辑操作符+条件操作符+......单目操作符:...