野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9110|回复: 1

关于USART2串口接收终端问题

[复制链接]
发表于 2017-8-5 01:52:17 | 显示全部楼层 |阅读模式
各位大神,才开始学STM32,最近想实现指南者与蓝牙HC-06通信,在给HC-06发送 “AT” 指令时,按理会收到 “OK” 应答,但是没有。查了老半天程序,没有发现错误,帮忙看看。
bsp_usart_blt.h

  1. #define             BLT_USART_BAUD_RATE                       115200

  2. #define             BLT_USARTx                                USART2
  3. #define             BLT_USART_APBxClock_FUN                         RCC_APB1PeriphClockCmd
  4. #define             BLT_USART_CLK                             RCC_APB1Periph_USART2
  5. #define             BLT_USART_GPIO_APBxClock_FUN                                                        RCC_APB2PeriphClockCmd
  6. #define             BLT_USART_GPIO_CLK                                                                                                RCC_APB2Periph_GPIOA   
  7. #define             BLT_USART_TX_PORT                         GPIOA   
  8. #define             BLT_USART_TX_PIN                          GPIO_Pin_2
  9. #define             BLT_USART_RX_PORT                         GPIOA
  10. #define             BLT_USART_RX_PIN                          GPIO_Pin_3
  11. #define             BLT_USART_IRQ                             USART2_IRQn
  12. #define             BLT_USART_IRQHandler                                                                                        USART2_IRQHandler


  13. void BLT_USART_Config(void);   // 配置蓝牙串口
  14. void Usart_SendStr_length( USART_TypeDef * pUSARTx, uint8_t *str,uint32_t strlen );
  15. void Usart_SendString( USART_TypeDef * pUSARTx, uint8_t *str);

  16. void bsp_USART_Process(void);    // 中断服务程序调用的函数,主要是读取接收到的数据
  17. char *get_rebuff(uint16_t *len);   
  18. void clean_rebuff(void);
复制代码
bsp_usart_blt.c

  1. ///  串口2接收中断
  2. static void NVIC_Configuration(void)
  3. {
  4.     NVIC_InitTypeDef NVIC_InitStructure;
  5.     /* Configure the NVIC Preemption Priority Bits */
  6.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

  7.     /* Enable the USARTy Interrupt */
  8.     NVIC_InitStructure.NVIC_IRQChannel = BLT_USART_IRQ;
  9.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1;
  10.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  11.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  12.     NVIC_Init(&NVIC_InitStructure);
  13. }

  14. //外部调用配置函数
  15. void BLT_USART_Config(void)
  16. {
  17.         GPIO_InitTypeDef GPIO_InitStructure;
  18.         USART_InitTypeDef USART_InitStructure;

  19.         /* config USART2 clock */
  20.         BLT_USART_APBxClock_FUN(BLT_USART_CLK, ENABLE);
  21.         BLT_USART_GPIO_APBxClock_FUN(BLT_USART_GPIO_CLK, ENABLE);

  22.         /* USART2 GPIO config */
  23.          /* Configure USART2 Tx (PA.02) as alternate function push-pull */
  24.                 GPIO_InitStructure.GPIO_Pin = BLT_USART_TX_PIN;
  25.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  26.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  27.                 GPIO_Init(BLT_USART_TX_PORT, &GPIO_InitStructure);
  28.             
  29.   /* Configure USART2 Rx (PA.03) as input floating */
  30.   GPIO_InitStructure.GPIO_Pin = BLT_USART_RX_PIN;
  31.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  32.   GPIO_Init(BLT_USART_RX_PORT, &GPIO_InitStructure);
  33.           
  34.         /* USART2 mode config */
  35.         USART_InitStructure.USART_BaudRate = BLT_USART_BAUD_RATE;
  36.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  37.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  38.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  39.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  40.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  41.         USART_Init(BLT_USARTx, &USART_InitStructure);
  42.        
  43.         /* 中断 */
  44.         NVIC_Configuration();
  45.         /* 使能接收中断 */
  46.         USART_ITConfig(BLT_USARTx, USART_IT_RXNE, ENABLE);

  47.         USART_Cmd(BLT_USARTx, ENABLE);
  48.         USART_ClearFlag(BLT_USARTx, USART_FLAG_TC);
  49. }
复制代码
然后中断服务入口程序是写在 stm32f10x_it.c 中的。。。问题是发送AT后读不到数据。。。
回复

使用道具 举报

发表于 2017-8-5 09:01:29 | 显示全部楼层
直接用野火HC05的程序应该能用,改改波特率,看看INT和RST引脚是不是一样
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 04:16 , Processed in 0.027954 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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