版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 徐金帅STM的关键资源介绍 1 GPIO端口的介绍 2 串口的介绍1 GPIO端口的介绍 STM32单片机单片机 最多有最多有7个个16位位的并的并行行 I/O端口:端口:PA、PB、PC、PD、PE、PF、PG。 STM32的几种封装类型的几种封装类型PA口 16脚PB口16脚PC口3脚PD口2脚STM32L15XXX 共有共有37个个I/O管脚管脚: PA口 16脚+ PB口16脚+ PC口3脚+ PD口2脚。 STM32单片机管脚:以单片机管脚:以STM32L 15XXX为例,为例,采用的封装形式采用的封装形式LQFP48使用STM32L15XXX设计的按键控制LED电路按键模块与LE
2、D模块 2.32.3.2.2 STM32单片机的单片机的 I/OI/O端口配置端口配置1、GPIOx 端口端口 定义定义 2、GPIO_Pin_x 管脚管脚 定义定义 3、GPIO_InitTypeDef 初始化端口参数初始化端口参数 定义定义4、GPIO_Init 初始化端口初始化端口 定义定义GPIO的功能配置输入配置 输出配置 复用功能配置模拟输入配置I/0端口位的基本结构输入配置当I/O 端口配置为输入时: 输出缓冲器被禁止 施密特触发输入被激活 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 出现在I/O 脚上的数据在每个APB2时钟被采样到输入数据寄存器 对输入数据
3、寄存器的读访问可得到I/O 状态输出配置当I/O 端口被配置为输出时: 输出缓冲器被激活 开漏模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将端口置于高阻状态(P-MOS从不被激活)。 推挽模式:输出寄存器上的0激活N-MOS,而输出寄存器上的1将激活P-MOS。 施密特触发输入被激活 弱上拉和下拉电阻被禁止 出现在I/O 脚上的数据在每个APB2时钟被采样到输入数据寄存器 在开漏模式时,对输入数据寄存器的读访问可得到I/O 状态 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。 端口位配置表复用功能输入当I/O 端口被配置为复用功能时: 在开漏或推挽式配置中,输出缓冲器
4、被打开 内置外设的信号驱动输出缓冲器(复用功能输出) 施密特触发输入被激活 弱上拉和下拉电阻被禁止 在每个APB2时钟周期,出现在I/O 脚上的数据被采样到输入数据寄存器 开漏模式时,读输入数据寄存器时可得到I/O 口状态 在推挽模式时,读输出数据寄存器时可得到最后一次写的值 模拟输入配置当I/O 端口被配置为模拟输入配置时: 输出缓冲器被禁止; 禁止施密特触发输入,实现了每个模拟I/O 引脚上的零消耗。施密特触发输出值被强置为0 ; 弱上拉和下拉电阻被禁止; 读取输入数据寄存器时数值为0 。 其中 ADC/DAC 模拟输入 每个每个GPIOx端口端口: :共有共有7 7个设置寄存器个设置寄存
5、器两个两个32位的配置寄存器位的配置寄存器(GPIOx_CRL, GPIOx_CRH)(GPIOx_CRL) (x=A.G): GPIOx configuration register low, GPIOx端口低配置寄存器,用于配置端口低配置寄存器,用于配置GPIOx端口的第端口的第0位位第第7位。位。两个两个32位的数据寄存器(位的数据寄存器(GPIOx_IDR,GPIOx_ODR)(GPIOx_IDR) (x=A.G): GPIOx input data register 一个一个32位的置位位的置位/复位寄存器复位寄存器 (GPIOx_BSRR) (GPIOx_BSRR) (x=A.G)
6、: GPIOx bit set/reset register一个一个16位的复位寄存器位的复位寄存器(GPIOx_BRR)一个一个32位的锁定寄存器位的锁定寄存器(GPIOx_LCKR)(GPIOx_LCKR) (x=A.G): GPIOx configuration lock register 在在固件函数库固件函数库文件中,文件中,用结构体GPIO_TypeDef定义GPIOx端口:typedef struct vu32 CRL;/configuration register low(GPIOx_CRL)(x=AE) vu32 CRH; vu32 IDR; vu32 ODR; vu32 B
7、SRR; vu32 BRR; vu32 LCKR; GPIO_TypeDef; /用结构体GPIO_TypeDef定义GPIOx端口,(即定义 GPIOx端口的7个设置寄存器)1、编程时,GPIOx端口的具体配置是从GPIOA、 GPIOB、GPIOC、 GPIOD、 或或 GPIOE寄存器组开始。首先,在固件库中,用结构体GPIO_TypeDef定义GPIOx端口,(即定义 GPIOx端口的7个设置寄存器):/*- General Purpose IO -*/typedef struct vu32 CRL;/configuration register low32(GPIOx_CRL)(x=
8、AE) vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; GPIO_TypeDef; /用结构体GPIO_TypeDef定义 GPIOx端口 /或称或称用结构体GPIO_TypeDef定义 GPIOx寄存器组GPIOx端口的7个设置寄存器/*- General Purpose IO -*/typedef struct vu32 CRL;/configuration register low32(GPIOx_CRL)(x=AE) vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 B
9、RR; vu32 LCKR; GPIO_TypeDef; /用结构体GPIO_TypeDef定义 GPIOx端口 /或称或称用结构体GPIO_TypeDef定义 GPIOx寄存器组GPIO_Init 初始化端口初始化端口 定义定义功能:根据GPIO_InitTypeDef中指定的参数,初始化外设GPIOx端口端口例如,GPIO_InitTypeDef GPIO_InitStructure;/定义结构体变量GPIO_InitStructure,用于初始化GPIOx端口的参数GPIO_Init(GPIOC, &GPIO_InitStructure); /初始化GPIOC端口输入输出宏定义/
10、输出宏定义#define LED1_ON GPIO_ResetBits(GPIOA, GPIO_Pin_8) /输出低电平#define LED1_OFFGPIO_SetBits(GPIOA, GPIO_Pin_8) /输出高电平#define LED2_ONGPIO_ResetBits(GPIOD, GPIO_Pin_11)#define LED2_OFFGPIO_SetBits(GPIOD, GPIO_Pin_11)#define LED3_ONGPIO_ResetBits(GPIOC, GPIO_Pin_7)#define LED3_OFFGPIO_SetBits(GPIOC, GPIO
11、_Pin_7)#define LED4_ONGPIO_ResetBits(GPIOC, GPIO_Pin_5)#define LED4_OFFGPIO_SetBits(GPIOC, GPIO_Pin_5)#define LED5_ONGPIO_ResetBits(GPIOB, GPIO_Pin_9)#define LED5_OFFGPIO_SetBits(GPIOB, GPIO_Pin_9)#define LED6_ONGPIO_ResetBits(GPIOB, GPIO_Pin_8)#define LED6_OFFGPIO_SetBits(GPIOB, GPIO_Pin_8)#define
12、LED7_ONGPIO_ResetBits(GPIOB, GPIO_Pin_5)#define LED7_OFFGPIO_SetBits(GPIOB, GPIO_Pin_5)#define LED8_ONGPIO_ResetBits(GPIOB, GPIO_Pin_0)#define LED8_OFFGPIO_SetBits(GPIOB, GPIO_Pin_0)/输入宏定义#define GET_LEFT()(!GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_3)#define GET_UP()(!GPIO_ReadInputDataBit(GPIOD,GPIO_Pi
13、n_4)#define GET_RIGHT()(!GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_5)#define GET_DOWN()(!GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_6)GPIO配置函数void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure:/* PB0,5,8,9输出 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9;GPIO_InitStru
14、cture.GPIO_Mode = GPIO_Mode_Out_OD;/开漏输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/50M时钟速度GPIO_Init(GPIOB, &GPIO_InitStructure);/* PC5,7输出*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; /开漏输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_
15、50MHz;/50M时钟速度GPIO_Init(GPIOC, &GPIO_InitStructure);/*PD7,输出*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;/开漏输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/50M时钟速度GPIO_Init(GPIOD, &GPIO_InitStructure); /*PA8,输出*/GPIO_InitStructure.GPIO_Pin =
16、 GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;/开漏输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/50M时钟速度GPIO_Init(GPIOA, &GPIO_InitStructure);/* PD3,4,5,6按键输入*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU
17、;/上拉输入GPIO_Init(GPIOD, &GPIO_InitStructure);NRZ码 NRZ码是单极性不归零码,是最基本的数字基带编码,编码规则是:用高电平表示基带中的1;用低电平表示基带中0。 USART介绍 通用同步异步收发器同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。 它支持同步单向通信和半双工单线通信,也支持LIN( 局部互连网) ,智能卡协议以及调制解调器(CTS/RTS) 操作。它还允许多处理器通信。 UART:universal as
18、ynchronous receiver and transmitter通用异步收发器 USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器 我们一般用的RS232叫UART,它是采用异步异步(Asynchronous)方式传输数据的,这种方式在传输数据时不需要向对方传递时钟信号。传输数据时不需要向对方传递时钟信号。 还有一种串行传输叫同步传输同步传输(Synchronous),这种方式在传传输数据时需要发送时钟信号输数据时需要发送时钟信号。USART特性 全双工的,异步通信 NRZ标准格式 分数波特
19、率发生器系统 发送和接收共用的可编程波特率,最高达4.5Mbits/s 可编程数据字长度(8 位或9位) 可配置的停止位-支持1 或2个停止位 单线半双工通信 单独的发送器和接收器使能位 检测标志 接收缓冲器满 发送缓冲器空 传输结束标志 校验控制 发送校验位 对接收数据进行校验 stm32串口使用 查询方式使用串口 1.配置时钟,由于使用串口是在复用IO口,需要打开串口时钟和相应的IO口时钟。 2.配置IO口,串口相应的IO口需要配置,输出口配置成复用推挽输出,输出速度根据需要配置,输入口配置为悬空输入。 3.配置串口,主要包括波特率、数据长度、停止位、奇偶校验、硬件流控制、接收发送模式。
20、4.最后打开串口配置串口程序配置串口1,引脚为PA.09,PA.10,串口引脚配置,开启时钟,打开串口功能:配置USART1,配置PA.09,PA.10,开启串口时钟,打开串口void Config_Usart1(void) GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/配置USATR1时钟,同时打开引脚时钟和USART1时钟RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);/配置USA
21、RT1的TX,PA.09,推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/配置USART1的RX,PA.10 为input floatingGPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode
22、= GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);/USART1 模式配置 9600 9位数据 ,偶校验 ,不使用硬件流控制,发送和接收USART_InitStructure.USART_BaudRate = 9600;USART_InitStructure.USART_WordLength = USART_WordLength_9b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = US
23、ART_Parity_Even;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;/初始化USART1,打开USART1USART_Init(USART1, &USART_InitStructure);USART_Cmd(USART1, ENABLE);USART功能概述 USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX) 。 RX:
24、接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O 端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O 口被同时用于数据的发送和接收。 总线在发送或接收前应处于空闲状态空闲状态 一个起始位 一个数据字(8 或9位),最低有效位在前 0.5,1.5,2 个的停止位,由此表明数据帧的结束 使用分数波特率发生器 12 位整数和4位小数的表示方法。 一个状态寄存器(USART_SR) 数据寄存器(USART_DR) 一个波特率寄存器(USART_BRR) ,12位的整数和4位小数 U
25、SART寄存器描述数据寄存器 USART数据寄存器 STM32的发送与接收是通过数据寄存器USART_DR来实现的,这是一个双寄存器,包含了TDR和RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到收据的时候,也是存在该寄存器内。该寄存器的各位描述如下: 可以看出,虽然是一个32位寄存器,但是只用了低9位(DR8:0),其他都是保留。DR8:0为串口数据,包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收用(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口。RDR寄存器提供了输入移位寄存器和内部总线之间的并
26、行接口。 USART寄存器描述 状态寄存器状态寄存器(USART_SR) TC:发送完成:发送完成 (Transmission complete) 位位6 当包含有数据的一帧发送完成后,并且TXE=1时,由硬件将该位置1 。如果USART_CR1 中的TCIE为1 ,则产生中断。由软件序列清除该位(先读USART_SR,然后写入USART_DR)。TC位也可以通过写入0 来清除,只有在多缓存通讯中才推荐这种清除程序。 0:发送还未完成; 1:发送完成。 RXNE :读数据寄存器非空:读数据寄存器非空 (Read data register not empty) 位位5 当RDR移位寄存器中的数
27、据被转移到USART_DR寄存器中,该位被硬件置位。如果USART_CR1 寄存器中的RXNEIE为1,则产生中断。对USART_DR的读操作可以将该位清零。RXNE 位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。 0:数据没有收到; 1:收到数据,可以读出。 PE: 校验错误校验错误 (Parity error) 位位0 在接收模式下,如果出现奇偶校验错误,硬件对该位置位。由软件序列对其清零(依次读USART_SR和USART_DR)。在清除PE位前,软件必须等待RXNE 标志位被置1 。如果USART_CR1 中的PEIE为1 ,则产生中断。 0:没有奇偶校验错误; 1:
28、奇偶校验错误。 发送接收程序/功能:接收一个字节的数据 入口参数:无 出口参数:返回收到的数据uint8_t error_evenflag = 0 x01;/串口接收偶校验错误标志uint8_t rxdata;/存储收到的数据uint8_t Receive_OneByte(void) /uint8_t rxdata;if(USART_GetITStatus(USART1, USART_IT_RXNE)!= RESET)/串口收到数据/RXNE(读数据寄存器非空),当该位被置1 的时候,就是提示已经有数据被接收到了 if(USART_GetITStatus(USART1, USART_FLAG_PE) = RESET)/偶校验正确RESET=0 /如果奇偶校验失败,USART_SR寄存器中的PE标志被置1 ,状态寄存器状态寄存器(USART_SR) rxdata = USART_ReceiveData(USART1);else error_evenflag = 0 x00;/偶校验错误时置0return error_evenflag;return rxdata;/USATR1 发送一个字节 功能:发送一个字节的数据 入口参数:发送到数void Send_OneByte(uint8_t onebyte)while(RESET = USART_G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自我评价与发展计划
- 2021年山东省泰安市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2023年内蒙古自治区赤峰市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2024年山东省青岛市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024年增味剂项目资金申请报告代可行性研究报告
- 2024年PCB高纯化学品项目资金筹措计划书代可行性研究报告
- 2025年无机矿物填充塑料项目规划申请报告模范
- 2025年盆景及园艺产品项目提案报告
- 2025年电池组配件项目申请报告范文
- 2025年监控摄像头项目申请报告模稿
- 小学-英语-湘少版-01-Unit1-What-does-she-look-like课件
- 单证管理岗工作总结与计划
- 规划设计收费标准
- 安全安全隐患整改通知单及回复
- 国有检验检测机构员工激励模式探索
- 采购部年终总结计划PPT模板
- CDI-EM60系列变频调速器使用说明书
- 【汇总】高二政治选择性必修三(统编版) 重点知识点汇总
- 材料表面与界面考试必备
- 骨科重点专科省级市级申报材料
- 焦点CMS用户手册
评论
0/150
提交评论