407串口程序不能接收

2019-07-20 14:10发布

参考429hal阿波罗串口例程,用stm32cube在原子407的板子上想实现串口收发,但是在调试助手中无法输入,只有一些预设的输出。程序如下


#include "stm32f4xx_hal.h"
#include "usart.h"
#include "gpio.h"
#include "sys.h"
void SystemClock_Config(void);
void Error_Handler(void);
int main(void)
{while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

                       
       if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        printf(" 您发送的消息为: ");
                        HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000);        //发送接收到的数据
                        while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET);                //等待发送结束
                        printf(" ");//插入换行
                        USART_RX_STA=0;
                }
                else
                {
                        times++;
                        if(times%5000==0)
                        {
                                printf(" ALIENTEK 阿波罗STM32F429开发板 串口实验 ");
                                printf("正点原子@ALIENTEK ");
                        }
                        if(times%200==0)printf("请输入数据,以回车键结束 ");  
//                        if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                         HAL_Delay(10);   
                }
               
  }
  /* USER CODE END 3 */

}





省略掉后续void SystemClock_Config(void),void Error_Handler(void),void assert_failed(uint8_t* file, uint32_t line)等函数。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
放浪的形骸
1楼-- · 2019-07-20 15:10
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-20 16:25
仿真对比下寄存器差异
放浪的形骸
3楼-- · 2019-07-20 17:46
 精彩回答 2  元偷偷看……
Sun_Fly
4楼-- · 2019-07-20 20:20
 精彩回答 2  元偷偷看……
放浪的形骸
5楼-- · 2019-07-20 22:44
Sun_Fly 发表于 2017-5-24 09:51
你调用usart回调函数没,这个函数管接收

主函数调用的HAL_Init()里包含了HAL_MspInit();里面定义如下void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct;
  if(uartHandle->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspInit 0 */

  /* USER CODE END USART1_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_USART1_CLK_ENABLE();
  
    /**USART1 GPIO Configuration   
    PA9     ------> USART1_TX
    PA10     ------> USART1_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    /* Peripheral interrupt init */
                #if EN_USART1_RX

    HAL_NVIC_SetPriority(USART1_IRQn, 3, 3);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
                #endif       

  /* USER CODE BEGIN USART1_MspInit 1 */

  /* USER CODE END USART1_MspInit 1 */
  }
所以该调用的我也调用了,cube生成的模板貌似不用那个HAL_UART_RxCpltCallback
Sun_Fly
6楼-- · 2019-07-20 23:23
你多看看教程,CUBE生成的没有,那是应为他不接收,只发送,你要接收就要用到这个back函数、

一周热门 更多>