精华内容
下载资源
问答
  • 串口配置的一般步骤

    2021-01-26 16:41:53
    串口配置的一般步骤 1、串口时钟使能,GPIO时钟使能: RCC_APB2PeriphClockCmd() 2、串口复位 USART_DeInit(); ——非必需 3、GPIO端口模式设置 GPIO_Init(); ——模式设置为GPIO_Mode_AF_PP GPIO_Mode_IN_...

    串口配置的一般步骤

    1、串口时钟使能,GPIO时钟使能: RCC_APB2PeriphClockCmd()

    2、串口复位 USART_DeInit(); ——非必需

    3、GPIO端口模式设置 GPIO_Init(); ——模式设置为GPIO_Mode_AF_PP
    GPIO_Mode_IN_FLOATING;
    在这里插入图片描述

    4、串口参数初始化
    USART_Init();
    图片: https://uploader.shimo.im/f/7Gwz6R4nd6xZEmrR.png

    typedef struct { uint32_t USART_BaudRate;//波特率 uint16_t
    USART_WordLength;//传输字长 uint16_t USART_StopBits;//停止位 uint16_t
    USART_Parity;// 校验方式(奇偶校验) uint16_t USART_Mode;//单/双工 uint16_t
    USART_HardwareFlowControl;//硬件流控制 } USART_InitTypeDef;

    5、开启中断并初始化NVIC(当开启中断的时候才需要这个步骤) NVIC_Init();//初始化
    USART_ITConfig();//中断配置 6、使能串口 USART_Cmd(); 7、编写中断处理函数
    USARTx_IRQHandler();//中断主体配置(需要自己手写) 8、串口数据收发 void
    USART_SendData();//发送数据到串口,DR uint16_t
    USART_ReceiveData();//接受数据,从DR读取接受到的数据 9、串口传输状态获取 FlagStatus
    USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); void
    USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

    1、初始化代码 void uart_init(u32 bound){

     //GPIO端口设置
    
      GPIO_InitTypeDef GPIO_InitStrue;      //在GPIO_Init函数调用时需定义一个GPIO_InitTypeDef结构体类型变量
      USART_InitTypeDef USART_InitStrue;  //USART_Init函数调用时需定义一个USART_InitTypeDef结构体类型变量
      NVIC_InitTypeDef NVIC_InitStrue;    //USART_Init函数调用时需定义一个NVIC_InitTypeDef结构体类型变量
    
    	 
    
      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 NVIC 配置
      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寄存器
    
       //USART 初始化设置
       USART_InitStructure.USART_BaudRate = bound;//串口波特率
       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(USART1, USART_IT_RXNE, ENABLE);//开启串口接中断
       USART_Cmd(USART1, ENABLE);                    //使能串口1 
    }
    

    2、中断中的相关代码

    void USART1_IRQHandler(void)                	//串口1中断服务程序
    	{
    	u8 Res;
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
          {
    		Res =USART_ReceiveData(USART1);	//读取接收到的数据
    		if((USART_RX_STA&0x8000)==0)//接收未完成
    			{
    			if(USART_RX_STA&0x4000)//接收到了0x0d
    				{
    				if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
    				else USART_RX_STA|=0x8000;	//接收完成了 
    				}
    			else //还没收到0X0D
    				{	
    				if(Res==0x0d)USAR_RX_STA|=0x4000;
    				else
    					{
    					USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
    					USART_RX_STA++;
    					if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收	  
    					}		 
    				}
    			}   		 
         } 									 
    #endif
    
    } 
    
    
    
    展开全文
  • STM32串口配置的一般步骤(库函数)(1)串口时钟使能:RCC_APBxPeriphClockCmd(); GPIO时钟使能:RCC_AHBxPeriphClockCmd();(2)引脚复用映射:GPIO_PinAFConfig();(3)GPIO端口模式配置:GPIO_Init(); 模式配置为GPIO_...

    STM32串口配置的一般步骤(库函数)
    (1)串口时钟使能:RCC_APBxPeriphClockCmd();
        GPIO时钟使能:RCC_AHBxPeriphClockCmd();
    (2)引脚复用映射:GPIO_PinAFConfig();
    (3)GPIO端口模式配置:GPIO_Init(); 模式配置为GPIO_Mode_AF
    (4)串口参数初始化:USART_Init();
    (5)开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
        NVIC_Init();
        USART_ITConfig();
    (6)使能串口:USART_Cmd();
    (7)编写中断处理函数:USARTx_IRQHandler();
    (8)串口数据收发:
        void USART_SendData();//发送数据到串口,DR
        uint16_t USART_ReceiveData();//接收数据,从DR读取接收的数据
    (9)串口传输状态获取:
        FlagStatus USART_GetFlagStatus();
        void USART_ClearITPendingBit();

    范例代码:

    #include "stm32f4xx.h"
    #include "usart.h"
    
    /* 中断服务函数 */
    void USART1_IRQHandler(void)
    {
        uint16_t recv;
     
        if (USART_GetFlagStatus(USART1,USART_IT_RXNE))
        {
            recv = USART_ReceiveData(USART1);
            USART_SendData(USART1,recv);
        }
    }
    
    
    void Usart1_Demo_Init(void)
    {
        GPIO_InitTypeDef GPIOA_InitStruct;
        USART_InitTypeDef USART1_InitStruct;
        NVIC_InitTypeDef NVIC_InitStruct;
    
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* 使能USART1时钟 */
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  /* 使能GPIOA的时钟 */
    
        /* 将PA9和PA10映射到串口1 */
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
    
        /* 设置GPIO端口模式 */
        GPIOA_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
        GPIOA_InitStruct.GPIO_Mode = GPIO_Mode_AF;
        GPIOA_InitStruct.GPIO_OType = GPIO_OType_PP;
        GPIOA_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
        GPIOA_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_Init(GPIOA, &GPIOA_InitStruct);
    
        /* 串口参数初始化 */
        USART1_InitStruct.USART_BaudRate = 115200;
        USART1_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART1_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART1_InitStruct.USART_Parity = USART_Parity_No;
        USART1_InitStruct.USART_StopBits = USART_StopBits_1;
        USART1_InitStruct.USART_WordLength = USART_WordLength_8b;
        USART_Init(USART1, &USART1_InitStruct);
    
        /* 使能USART1 */
        USART_Cmd(USART1, ENABLE);
    
        /* 使能串口使用的中断 */
        NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
        NVIC_Init(&NVIC_InitStruct);
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    }
    
    int main(void)
    {
        /* 设置中断分组 */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        Usart1_Demo_Init();
    
        while (1);
    }

     

    转载于:https://www.cnblogs.com/jamesharden/p/6675460.html

    展开全文
  • 串口配置的一般步骤

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    串口配置的一般步骤
    在这里插入图片描述

    展开全文
  • 串口配置的一般步骤 串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); 串口复位:USART_DeInit(); 这一步不是必须的 GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP 串口参数初始化:USART_Init();...
  • stm32——串口配置一般步骤

    千次阅读 2019-07-30 21:18:58
    串口配置的一般步骤 1、串口时钟使能,GPIO时钟使能: RCC_APB2PeriphClockCmd() 2、串口复位 USART_DeInit(); ——非必需 3、GPIO端口模式设置 GPIO_Init(); ——模式设置为GPIO_Mode_AF_PP 4、串口参数初始...
  • 串口和PWM配置步骤

    2019-05-02 22:19:18
    串口配置的一般步骤: 1.串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); 2.口复位:USART_DeInit(); 这一步不是必须的 3.GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP 4.串口参数初始化:...
  • 虽然使用诸如 CSerialPort VC串口类,MSComm VC 串口控件等非常方便,但有时这些控件并不适合自己的特殊需求,所以有必要了解一下基于Windows API的串口编程方法,下面介绍一下API串口编程的一般步骤及相关串口API...
  • 2.1打开串口 在32位Windows中,串口和其他通信设备(如磁盘等)都...在使用串口进行数据通信前必须对其进行正确的配置,串口需要配置的主要参数有波特率、数据位、停止位、奇偶校验、收发数据缓冲区大小。除此之...
  • STM32串口配置步骤

    2017-07-13 09:54:00
    串口设置的一般步骤可以总结为如下几个步骤: 1) 串口时钟使能, GPIO 时钟使能2) 串口复位3) GPIO 端口模式设置4) 串口参数初始化5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)6) 使能串口7) ...
  • 串口相关配置寄存器 状态寄存器(USART_SR) 状态寄存器适用于检测串口此时所处状态。它能够检测到状态有:发送寄存器空位、发送完成位、读数据寄存器非空位、检测到主线空闲位、过载错误为等等。 这边主要...
  • 串口配置的一般步骤: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfwMwJFv-1603207574128)(7.png)] Attention: 关于有GPIO的配置 具体要看表格配置串口发送和接受时候的Mode 5.串口...
  • #include "stm32f10x.h" ...该程序讲解串口程序的一般配置方法: 步骤为: 1、先对端口进行复用或者重映射操作(该程序中是对端口进行复用操作) 2、串口复位,函数为USART_DeInit(); 3、串口初始化:...
  • 1.串口配置的一般步骤 (1)串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); (2)串口复位:USART_DeInit();这一步不是必须的 (3)GPIO端口模式设置:GPIO_Init();模式设置GPIO_Mode_AF_PP (4)串口参数...
  • #include "stm32f10x.h" ...该程序讲解串口程序的一般配置方法: 步骤为: 1、先对端口进行复用或者重映射操作(该程序中是对端口进行复用操作) 2、串口复位,函数为USART_DeInit(); 3、串口初始化:...
  • 串口通信haozi的32学习笔记——串口通信1 对应引脚2 通信设置1). 处理器与外部设备通信异步通信需要定义的参数波特率计算3. 串口配置的一般步骤函数设置(串口1为例)头文件程序源文件主函数效果附表 1 对应引脚 参考...
  • 单片机串口是必须要学习的,而且很重要,在数据传输已经程序调试中都很重要。 本博客再学习一下USART2 串口 其实串口不是每一个IO都...STM32串口配置的一般步骤(库函数) (1)串口时钟使能:RCC_APBxPeriphClockCm...
  • 1.5串口通信实验

    2021-02-01 10:19:42
    串口配置的一般步骤: 串口时钟的使能,GPIO口时钟的使能; 串口复位(非必须); GPIO端口模式设置; 串口参数初始化; 开始中断并且初始化NVIC; 使能串口; 编写中断处理函数; 串口数据的收发; 串口...
  • stm32f4串口初始化

    千次阅读 2018-09-25 21:00:32
    串口配置的一般步骤 1 定义一个IO口初始化结构体,定义一个串口初始化结构体 2 IO时钟使能 3 串口时钟使能 4 IO模式设置 5 IO口初始化 6 串口参数配置 7 串口初始化 8 串口使能 1. 声明结构体变量 GPIO_...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

串口配置的一般步骤