stm32学习--串口中断

本文介绍了STM32F103ZET6使用串口1进行中断配置的过程,重点在于串口资源、中断触发和GPIO设置。通过实验,作者在接收到特定字节时点亮LED灯,并分享了在串口调试中遇到的问题及解决方案,强调了时钟初始化、中断服务函数的正确性和串口助手的配置要点。
摘要由CSDN通过智能技术生成

实验目的

显然不是纯粹为了钻研,有被毕设逼迫的成分,本来选择51,但是感觉51资源不太够用,而且51的逼格不够,答辩的话stm32感觉逼格高一些,但是也增加了风险,我对51的资源,寄存器,开发流程都相当熟悉,但是32的话仅仅还是入门,只能跟着比人用库开发,万一有懂行的老师,那就GG,所以无论什么原因,既然选择32,就要好好学习。闲话到此结束,上正文。

串口简介

stm32的串口资源还是比较丰富的,有三个同步异步串口,两个异步串口,这里针对的是stm32f103ZET6。分别挂接在APB1和APB2上,其中串口1挂接在APB2总线上,有更快的时钟频率,这里采用的是串口1。串口1有多种事件可以触发中断,这里采用的是接收缓冲区非空触发,即RXNE。即把接收消息放在中断里,也可以不采用中断的方式,在主函数循环里面轮询,效率相对较低,而且不能满足实时要求。实验采用的方法是由PC机向stm32发送一个字节的数据,然后判断字节内容,点亮LED灯。

配置流程

关于串口实验的说明

  1. 开发板,stm32f103zet6;
  2. 串口,USART1,挂接在APB1总线上,引脚为PA9(TX),PA10(RX);
  3. 串口调试助手,要在连接上USB线后才能打开;

配置流程

  1. 初始化时钟
    需要初始化GPIOA和USART1的时钟,都在APB2总线上;

  2. 初始化GPIOA端口
    PA9设置为复用推挽输出,要用它发送数据。PA10设置为浮空输入。关于端口的设置可以参考《stm32f10xxx参考手册》8.1.11章节。

  3. 初始化串口
    9600,8-N-1;无硬件控制流,读写均开启;

  4. 中断触发事件配置
    RXNE,接收缓冲区非空(有数据发过来);

  5. 优先级配置
    优先级分组,优先级设置;

  6. 串口使能

代码

  1. 串口部分
#include "usart.h"

u8 recv;

void USART1_Init(u32 bound)
{
   
		GPIO_InitTypeDef GPIO_InitStructure;
		USART_InitTypeDef USART_InitStructure;
		NVIC_InitTypeDef NVIC_InitStructure;
		/*时钟初始化*/
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
		/*端口初始化*/
		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);
		/**/
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
		GPIO_InitStructure.GPIO_Mode =</
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值