STM2串口配置

发布者:等风来88888最新更新时间:2018-07-20 来源: eefocus关键字:STM2  串口配置 手机看文章 扫描二维码
随时随地手机看文章

前面几篇介绍了时钟、GPIO、中断这三部分,接下来介绍常用的调试串口配置:

1、硬件接口介绍,采用USART1来作为打印串口,其中PA9--------TX    

                                                                                                  PA10------RX

      


3、设置中断分组,至于中断分组怎么设置具体可以参考上一篇。

      http://blog.csdn.net/u014449366/article/details/52717299


      void UART_NVIC_Configuration(void)
{
   NVIC_InitTypeDef NVIC_InitStructure;
  
   /* Set the Vector Table base location at 0x08000000 */
   NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
  
   /* Configure the NVIC Preemption Priority Bits */  
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  
   /* Enable the USART1 Interrupt */
   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;       //通道设置为串口1中断
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   //中断响应优先级0
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //打开中断
   NVIC_Init(&NVIC_InitStructure);   //初始化
}


4、中断配置函数,主要是打开相应时钟,配置复用引脚,设置波特率、数据格式,开启接受中断,使能串口。


/*************************************************
函数名:USART1_Configuration
输  入:
输  出:
功能说明:
初始化串口硬件设备,启用中断
配置步骤:
(1)打开GPIO和USART1的时钟
(2)设置USART1两个管脚GPIO模式
(3)配置USART1数据格式、波特率等参数
(4)使能USART1接收中断功能
(5)最后使能USART1功能


**************************************************/
void USART1_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;


/* 第1步:打开GPIO和USART部件的时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);


/* 第2步:将USART Tx的GPIO配置为推挽复用模式 */
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);


/* 第3步:将USART Rx的GPIO配置为浮空输入模式
由于CPU复位后,GPIO缺省都是浮空输入模式,因此下面这个步骤不是必须的
但是,我还是建议加上便于阅读,并且防止其它地方修改了这个口线的设置参数
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*  第3步已经做了,因此这步可以不做
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
*/
GPIO_Init(GPIOA, &GPIO_InitStructure);




/* 第4步:配置USART1参数
   - BaudRate = 115200 baud
   - Word Length = 8 Bits
   - One Stop Bit
   - No parity
   - Hardware flow control disabled (RTS and CTS signals)
   - Receive and transmit enabled
*/
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
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);


    /* 若接收数据寄存器满,则产生中断 */
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);


/* 第5步:使能 USART1, 配置完毕 */
USART_Cmd(USART1, ENABLE);


    /* 如下语句解决第1个字节无法正确发送出去的问题 */
    USART_ClearFlag(USART1, USART_FLAG_TC);     // 清标志
}


5、编写串口发送字节函数

void Uart1_PutChar(u8 ch)
{
  USART_SendData(USART1, (u8) ch);
  while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}      


6、编写串口接受数据中断函数

void USART1_IRQHandler(void)            //在中断服务程序中,由于主机响应中断时并不知道是哪个中断源发出中断请求,因此必须在中断服务程序中对中断源进行判别,然后分别进行处理。当然,如果只涉及到一个中断请求,是不用做上述判别的。但是无论什么情况,做上述判别是个好习惯
{
  u8 dat;
   
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)    //若接收数据寄存器满
  {     
    dat = USART_ReceiveData(USART1);  
         
     if(dat == 0x00)                    
{   
 dat = 0;      
      GPIO_ResetBits(GPIOB, GPIO_Pin_0);   //点亮LED0         
      Uart1_PutChar(0x00);                                
}                                             
  }


7、实际测试当通过串口工具按16进制发送00时,led被点亮,同时上位机接收到00。

       


关键字:STM2  串口配置 引用地址:STM2串口配置

上一篇:STM32系统时钟设置详解
下一篇:STM32中断配置

推荐阅读最新更新时间:2024-03-16 16:09

stm32de关于rs485的串口2的配置
stm32串口1的配置 if EN_USART1_RX //如果使能了接收 //串口1中断服务程序 //注意,读取USARTx- SR能避免莫名其妙的错误 u8 USART_RX_BUF ; //接收缓冲,最大USART_REC_LEN个字节. //接收状态 //bit15, 接收完成标志 //bit14, 接收到0x0d //bit13~0, 接收到的有效字节数目 u16 USART_RX_STA=0; //接收状态标记 void uart_init(u32 bound){ //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_
[单片机]
avr单片机USART串口通讯初始化配置说明
avr atmega16 单片机通用同步和异步串行接收器和转发器 (USART) 是一个高度灵活的串行通讯设备,其工作模式及其初始化,寄存器说明如下 *USART 控制和状态寄存器A(UCSRA) USART 控制和状态寄存器A(UCSRA) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 RXC TXC UDRE FE DOR PE U2X MPCM RXC: USART 接收结束 接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷 新,导致RX
[单片机]
关于stm8l05RB的usart1串口复用A2,A3配置
#include uart1.h #include stm8l15x.h void Uart1_Init(void) { CLK_PeripheralClockConfig(CLK_Peripheral_USART1,ENABLE); SYSCFG_REMAPDeInit(); SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE); GPIO_Init(GPIOA, GPIO_Pin_2, GPIO_Mode_Out_PP_High_Fast);//TXD GPIO_Init(GPIOA, GPIO_Pin_3, GPIO_
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved