打印
[STM32L0]

STM32L051 USART2与BC95通信问题

[复制链接]
3969|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mochou|  楼主 | 2017-9-30 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位好,使用STM32L051与BC95无线模块通信,官方的例程也与BC95模块通信不上,或者有时通信上BC95返回的数据如下:
REBOOT_CAUSE_SECURITY_RESET_UNKNOWN
Neul
OK
通常情况下是通信不下,程序一直 卡在接收中断的
/* Process Unlocked */
    __HAL_UNLOCK(huart);,
USART2程序初始化部分:
UartHandle.Instance        = USARTx;

  UartHandle.Init.BaudRate   = 9600;
  UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
  UartHandle.Init.StopBits   = UART_STOPBITS_1;
  UartHandle.Init.Parity     = UART_PARITY_NONE;
  UartHandle.Init.HwFlowCtl  = UART_HWCONTROL_NONE;
  UartHandle.Init.Mode       = UART_MODE_TX_RX;
  HAL_UART_Init(&UartHandle);
  
/* if(HAL_UART_Init(&UartHandle) != HAL_OK)
  {
    Error_Handler();
  }
  
  if(HAL_UART_DeInit(&UartHandle) != HAL_OK)
  {
    Error_Handler();
  } */
  /*##-1- Enable peripherals and GPIO Clocks #################################*/
  /* Enable GPIO TX/RX clock */
  USARTx_TX_GPIO_CLK_ENABLE();
  USARTx_RX_GPIO_CLK_ENABLE();


  /* Enable USARTx clock */
  USARTx_CLK_ENABLE();
  
  /*##-2- Configure peripheral GPIO ##########################################*/  
  /* UART TX GPIO pin configuration  */
  GPIO_InitStruct.Pin       = USARTx_TX_PIN;
  GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;
  GPIO_InitStruct.Pull      = GPIO_PULLUP;
  GPIO_InitStruct.Speed     = GPIO_SPEED_FREQ_VERY_HIGH;
  GPIO_InitStruct.Alternate = USARTx_TX_AF;

  HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);

  /* UART RX GPIO pin configuration  */
  GPIO_InitStruct.Pin = USARTx_RX_PIN;
  GPIO_InitStruct.Alternate = USARTx_RX_AF;

  HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
   
  /*##-3- Configure the NVIC for UART ########################################*/
  /* NVIC for USART */
  HAL_NVIC_SetPriority(USARTx_IRQn, 0, 1);
  HAL_NVIC_EnableIRQ(USARTx_IRQn);
请问各有没有遇到过类似的情况,怎么解决的呢,谢谢
沙发
feelhyq| | 2017-9-30 09:36 | 只看该作者
这个就是HAL库最蛋疼的地方,少调用一个函数就会出现各种各样的问题

在中断里面调用这个函数就可以了 HAL_UART_IRQHandler(UartHandle);

使用特权

评论回复
板凳
mochou|  楼主 | 2017-9-30 13:05 | 只看该作者
feelhyq 发表于 2017-9-30 09:36
这个就是HAL库最蛋疼的地方,少调用一个函数就会出现各种各样的问题

在中断里面调用这个函数就可以了 HAL_ ...

/******************************************************************************/
/**
  * @brief  This function handles UART interrupt request.  
  * @param  None
  * @retval None
  * @NOTE   This function is redefined in "main.h" and related to DMA  
  *         used for USART data transmission     
  */
void USARTx_IRQHandler(void)
{
  HAL_UART_IRQHandler(&UartHandle);
}

中断函数里面有的,但还是不行,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

1422

帖子

8

粉丝