OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5579|回复: 0

N32G45XVL-STB开发板试用(国民技术)- 3 (分享: UART)

[复制链接]

44

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
563
金钱
563
注册时间
2016-9-28
在线时间
158 小时
发表于 2022-12-18 17:28:42 | 显示全部楼层 |阅读模式
本帖最后由 mftang2016 于 2022-12-18 18:10 编辑

源代码和开发文档地址:
https://gitee.com/mftang/n32-g45-xvl-stb.git



5  串口
5.1 需求
使用UART 1 实现数据发送和接收功能,使用中断实现接收数据
1670939419079.png

5.2 功能实现
串口配置步骤如下:
step -1: 配置 TX 和 RX IO 接口属性
  1. /*******************************************************************************
  2. Board Debug UART IO: UART-1
  3. *******************************************************************************/

  4. #define  DEBUG_UART           USART1

  5. #define  DEBUG_GPIO           GPIOA
  6. #define  DEBUG_RxPin          GPIO_PIN_10
  7. #define  DEBUG_TxPin          GPIO_PIN_9

  8. #define  RCC_DEBUG_UART_CLK       RCC_APB2_PERIPH_USART1
  9. #define  RCC_DEBUG_GPIO_CLK       RCC_APB2_PERIPH_GPIOA

  10. #define  GPIO_APBxClkCmd          RCC_EnableAPB2PeriphClk
  11. #define  USART_APBxClkCmd         RCC_EnableAPB2PeriphClk

  12. #define  DEBUG_USART_IRQn         USART1_IRQn
  13. #define  DEBUG_IRQHandler         USART1_IRQHandler

  14. static void Board_RCC_Configuration(void)
  15. {
  16.     /* Enable GPIO clock */
  17.     GPIO_APBxClkCmd(RCC_DEBUG_GPIO_CLK | RCC_APB2_PERIPH_AFIO, ENABLE);
  18. }

  19. static void Board_GPIO_Configuration(void)
  20. {
  21.     GPIO_InitType GPIO_InitStructure;

  22.     /* Configure USARTx Tx as alternate function push-pull */
  23.     GPIO_InitStructure.Pin        = DEBUG_TxPin;
  24.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  25.     GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
  26.     GPIO_InitPeripheral(DEBUG_GPIO, &GPIO_InitStructure);

  27.     /* Configure USARTx Rx as input floating */
  28.     GPIO_InitStructure.Pin       = DEBUG_RxPin;
  29.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  30.     GPIO_InitPeripheral(DEBUG_GPIO, &GPIO_InitStructure);
  31. }
复制代码
step-2: 配置串口相关寄存区参数
  1. void uart_Init( USART_Module* USARTx, uint32_t baud)
  2. {
  3.     USART_InitType USART_InitStructure;
  4.    
  5.     /* Enable UART Clock */
  6.     USART_APBxClkCmd(RCC_DEBUG_UART_CLK, ENABLE);
  7.    
  8.     /* USARTy and USARTz configuration --------------------------------------------*/
  9.     USART_InitStructure.BaudRate            = baud;
  10.     USART_InitStructure.WordLength          = USART_WL_8B;
  11.     USART_InitStructure.StopBits            = USART_STPB_1;
  12.     USART_InitStructure.Parity              = USART_PE_NO;
  13.     USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
  14.     USART_InitStructure.Mode                = USART_MODE_RX | USART_MODE_TX;

  15.     /* Configure USARTx */
  16.     USART_Init(USARTx, &USART_InitStructure);
  17.    
  18.     USART_ConfigInt(USARTx, USART_INT_RXDNE, ENABLE);
  19.    
  20.     /* Enable the USARTx */
  21.     USART_Enable(USARTx, ENABLE);
  22.    
  23. }

  24. static void Board_NVIC_Configuration(void)
  25. {
  26.     NVIC_InitType NVIC_InitStructure;

  27.     /* Configure the NVIC Preemption Priority Bits */
  28.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

  29.     /* Enable the USARTy Interrupt */
  30.     NVIC_InitStructure.NVIC_IRQChannel            = DEBUG_USART_IRQn;
  31.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  32.     NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
  33.     NVIC_Init(&NVIC_InitStructure);
  34. }
复制代码
step-3: 实现发送函数
  1. void uart_SendByte( USART_Module* USARTx, uint8_t _byte)
  2. {
  3.     USART_SendData(USARTx, _byte);
  4.     while (USART_GetFlagStatus(USARTx, USART_FLAG_TXDE) == RESET);
  5. }
复制代码
step-4: 实现接收中断函数
  1. void DEBUG_IRQHandler(void)
  2. {
  3.     uint8_t _byte = USART_ReceiveData(DEBUG_UART);
  4.     RxBuffer1[count++] =  _byte;
  5.     if ( count >= 128 )
  6.     {
  7.        count = 0;
  8.     }
  9.     DEBUG_UART->STS &= ~ USART_STS_RXDNE;
  10. }
复制代码
5.3 测试
1671349459654.png


UART 相关寄存器的数据
1671349571317.png




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表