UART 串口相关库函数

先把一般使用时候用到的几个串口库函数列出来。

以下是串口初始化的一个参考函数:

void uart_init(u32 bound){

    GPIO_InitTypeDef GPIO_InitStructure; //对GPIO进行配置
    USART_InitTypeDef USART_InitStructure; //对串口进行配置
    NVIC_InitTypeDef NVIC_InitStructure;  //对串口中断进行配置

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIO时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能串口时钟

    GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //配置GPIO的AF功能
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //配置GPIO的AF功能

     //GPIO初始化
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;// 配置成AF模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //
    GPIO_Init(GPIOA,&GPIO_InitStructure); //调用GPIO初始化函数

   //USART1 初始化
    USART_InitStructure.USART_BaudRate = bound;//设置波特率
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;//设置有效数据长度
    USART_InitStructure.USART_StopBits = USART_StopBits_1;//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); //调用串口初始化函数

    USART_Cmd(USART1, ENABLE);  //使能串口1

    USART_ClearFlag(USART1, USART_FLAG_TC);

    #if EN_USART1_RX
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//使能串口中断
    //USART_IT_RXNE: Receive Data register not empty interrupt

    //Usart1 NVIC 中断配置
    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;// 要配置的是串口1的中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;        //响应优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //中断使能
    NVIC_Init(&NVIC_InitStructure);    //调用中断初始化函数

#endif

}

定义串口中断函数:void USART1_IRQHandler(void) 。这个函数的名字不是随便取的,在startup_stm32f40_41xxx.s中有定义:

DCD     USART1_IRQHandler                 ; USART1

如果串口发生了中断,就会跳到这个函数,这个函数的处理是要用户自己定义的。

另外用到的几个函数:

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)
//调用方法例如:
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

串口是有很多中断源的,传入参数UASRT_IT_RXNE,就是判断接收是不是产生了中断,这个函数做的就是对串口控制寄存器CR1,CR2,CR3某些位,结合SR寄存器,做出的判断。

但是CR寄存器是在哪里赋值的呢?

时间: 2024-11-03 03:25:05

UART 串口相关库函数的相关文章

基于STM32之UART串口通信协议(二)发送

一.前言 1.简介 在上一篇UART详解中,已经有了关于UART的详细介绍了,也有关于如何使用STM32CubeMX来配置UART的操作了,而在该篇博客,主要会讲解一下如何实现UART串口的发送功能. 2.UART简介 嵌入式开发中,UART串口通信协议是我们常用的通信协议之一,全称叫做通用异步收发传输器(Universal Asynchronous Receiver/Transmitter). 3.准备工作 在UART详解中已经有了详细的说明,在这里就不说明了. 注: 建议每次编写好一个相关功

嵌入式Linux裸机开发(七)——UART串口通信

嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER, 它用来传输串行数据.发送数据时, CPU 将并行数据写入UART,UAR按照一定的格式在一根电线上串 行发出:接收数据时, UART检测另一根电线的信号,将串行收集在缓冲区中, CPU 即可读取 UART 获得这些数据. 在 S5PV210中, UART提供了 4 对独立的异步串口I/O端口,

(三) UART 串口通讯

UART  : university asynchronous receiver and transmitter UART  // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏,无法获得设备的实事数据信息,所以可以通过 UART 串口和超级终端相连,打印嵌入式设备输出信息.也可以通过串口跟踪和调试. 比如设备: 网络路由器.交换机通过串口配置, GPS接收器通过串口输出GPS接收的数据. 1.异步通信技术:发送和接收方没有同步时钟,只有数据线,但是协商好了协议,(固定频率

S3C2440 UART串口驱动

++++++++++++++++++++++++++++++++++++++++++ 本文转载自mr_raptor的专栏,感谢mr_raptor大神. http://blog.csdn.net/mr_raptor/article/details/6556133 ++++++++++++++++++++++++++++++++++++++++++ 通用异步接收器和发送器(Universal Asynchronous Receiver and Transmitter)简称UART.通常是嵌入式设备中

Win10 IoT C#开发 4 - UART 串口通信

原文:Win10 IoT C#开发 4 - UART 串口通信 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug功能可以进行断点追踪调试.C#语言本身也有很好的用户基础,相信Win10 IoT 不远的将来会火起来.上个月帮朋友解决了关于Win10 IoT 的一些技术问题,当前也有很多公司在尝试采用Win10 IoT进行开发,可能也会遇到这些问题,

Linux下使用putty进行UART串口调试【转】

本文转载自:http://blog.csdn.net/xzongyuan/article/details/11593101 版权声明:本文为博主原创文章,未经博主允许不得转载. 使用putty进行串口调试,非常简单.只需要设置好端口(Serial Line),Linux中默认接上串口后,端口为ttyS0,或者ttyUSB0(对应USB转串口),如果再多接一个,就会显示ttyS1或者ttyUSB1:Window中,普通串口对应的是COM1.COM2,USB对应COM3(需要安装驱动,在设备管理器查

SJXXX串口扩展芯片 4串口芯片 UART串口芯片

SJXX串口扩展芯片1 概述SJ000是一款具备I2C总线/SPI总线/UART接口的四通道异步收发器件,通过模式选择使得该器件工作于以上任何一种主接口模式下.器件的四个通道UART可提供高达2Mbps的数据率,低功耗模式和睡眠电流.每个通道含有一个接收器和一个发送器,并带有64字节发送/接收FIFO,通道波特率.字长.校验格式可独立设置,也可以独立设置IrDA红外通信.RS-485自动收发控制.9位网络地址自动识别.软件/硬件自动流量控制.广播接收等.器件还带有可编程中断功能,实现与主机的信息

Uart串口

title: Uart串口 tags: ARM date: 2018-10-20 16:38:28 --- Uart串口 和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的,简单的应用测试可以先关掉中断.从下图看到,usb转串口连接到COM1,COM1是内部的Uart0 程序初始化 UART0 RX0 GPH3 TX0 GPH2 //init uart void Uart0_init() { //配置GPIO 复用为uart //配置相应的 GPHCON 为10 串口

Uart串口与RS232串口的区别

Uart这里指的是TTL电平的串口:RS232指的是RS232电平的串口. TTL电平是3.3V的,而RS232是负逻辑电平,它定义+3~+15V为低电平,而-15~-3V为高电平. Uart串口的RXD.TXD等一般直接与处理器芯片的引脚相连,而RS232串口的RXD.TXD等一般需要经过电平转换(通常由Max232等芯片进行电平转换)才能接到处理器芯片的引脚上,否则这么高的电压很可能会把芯片烧坏. 我们平时所用的电脑的串口就是RS232的,当我们在做电路工作时,应该注意下外设的串口是Uart