原子哥 串口通信代码笔记1

您所在的位置:网站首页 正点原子modbus 原子哥 串口通信代码笔记1

原子哥 串口通信代码笔记1

2024-07-15 06:53:21| 来源: 网络整理| 查看: 265

本人小白自学 想通过记笔记加深自己的记忆 有什么错误欢迎大家指点

首先UART是异步通信 没有时钟控制 所以要自行设置波特率

TXD是发送引脚 单片机发送数据 RXD是接收引脚 单片机接收数据

以串口1为例 PA9为发送引脚 PA10为接收引脚 

 

首先要配置引脚 PA9 PA10

1.打开串口1和引脚A的时钟

2.PA.9为复用推挽输出 PA.10为浮空输入

  GPIO_InitTypeDef GPIO_InitStructure;      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟        //USART1_TX   GPIOA.9   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9       //USART1_RX      GPIOA.10初始化   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  

其次是USART1的 初始化设置

 

起始位:没有通信的话起始位是空闲状态 如果起始位位0则代表数据通信开始了

数据位有9位 有效的是8位 有一个是奇偶校验位  如果是偶校验 当八个数据位中有3个1 第九位校验位就要补1 使其为偶数个1 如果有四个1则校验位为0   这个是为了提高数据传输的准确率

波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标。

串口初始化需要设置的几个参数

波特率:一般是9600或者115200

字长:如果设置为8位则无奇偶校验位 如果设置为9位则有奇偶校验位

停止位:设置为一个停止位

无硬件数据流控制

收发模式:发送模式和接收模式都设置

   USART_InitTypeDef USART_InitStructure;   USART_InitStructure.USART_BaudRate = 9600;//串口波特率     USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式     USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位     USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    //收发模式   USART_Init(USART1, &USART_InitStructure); //初始化串口1

如果要开启中断就使用USART_ITConfig函数

最后使能串口

  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断   USART_Cmd(USART1, ENABLE);                    //使能串口1 

如果要开启中断 则也要配置NVIC串口1的初始化

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//开启中断通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭