[技术问答] HK32F030R8T6使用HAL库串口不能使用

[复制链接]
 楼主| WWEN11 发表于 2021-1-22 11:55 | 显示全部楼层 |阅读模式
使用CUBEMX生成stm32F030R8T6的工程文件,用HK32F030R8T6运行程序,GPIO能用,串口不能用,请大家帮忙看看。




  1. static void MX_USART1_UART_Init(void)
  2. {

  3.   /* USER CODE BEGIN USART1_Init 0 */

  4.   /* USER CODE END USART1_Init 0 */

  5.   /* USER CODE BEGIN USART1_Init 1 */

  6.   /* USER CODE END USART1_Init 1 */
  7.   huart1.Instance = USART1;
  8.   huart1.Init.BaudRate = 9600;
  9.   huart1.Init.WordLength = UART_WORDLENGTH_8B;
  10.   huart1.Init.StopBits = UART_STOPBITS_1;
  11.   huart1.Init.Parity = UART_PARITY_NONE;
  12.   huart1.Init.Mode = UART_MODE_TX_RX;
  13.   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  14.   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  15.   huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  16.   huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  17.   if (HAL_UART_Init(&huart1) != HAL_OK)
  18.   {
  19.     Error_Handler();
  20.   }
  21.   /* USER CODE BEGIN USART1_Init 2 */

  22.   /* USER CODE END USART1_Init 2 */

  23. }
  24. /***串口初始化***/
  25. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  26. {
  27.   GPIO_InitTypeDef GPIO_InitStruct = {0};
  28.   if(huart->Instance==USART1)
  29.   {
  30.   /* USER CODE BEGIN USART1_MspInit 0 */

  31.   /* USER CODE END USART1_MspInit 0 */
  32.     /* Peripheral clock enable */
  33.     __HAL_RCC_USART1_CLK_ENABLE();

  34.     __HAL_RCC_GPIOA_CLK_ENABLE();
  35.     /**USART1 GPIO Configuration
  36.     PA9     ------> USART1_TX
  37.     PA10     ------> USART1_RX
  38.     */
  39.     GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
  40.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  41.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  42.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  43.     GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
  44.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  45.     /* USART1 interrupt Init */
  46.     HAL_NVIC_SetPriority(USART1_IRQn, 1, 0);
  47.     HAL_NVIC_EnableIRQ(USART1_IRQn);
  48.   /* USER CODE BEGIN USART1_MspInit 1 */

  49.   /* USER CODE END USART1_MspInit 1 */
  50.   }
  51. }





  52. int main(void)
  53. {
  54.   /* USER CODE BEGIN 1 */
  55.                 unsigned char a[5] ={0x11,0x22,0x33,0x44,0x55};
  56.   /* USER CODE END 1 */

  57.   /* MCU Configuration--------------------------------------------------------*/

  58.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  59.   HAL_Init();

  60.   /* USER CODE BEGIN Init */

  61.   /* USER CODE END Init */

  62.   /* Configure the system clock */
  63.   SystemClock_Config();

  64.   /* USER CODE BEGIN SysInit */

  65.   /* USER CODE END SysInit */

  66.   /* Initialize all configured peripherals */
  67.   MX_GPIO_Init();
  68.         HAL_UART_MspInit(&huart1);       
  69.   MX_USART1_UART_Init();
  70.   /* USER CODE BEGIN 2 */

  71.   /* USER CODE END 2 */

  72.   /* Infinite loop */
  73.   /* USER CODE BEGIN WHILE */
  74.   while (1)
  75.   {
  76.     /* USER CODE END WHILE */

  77.     /* USER CODE BEGIN 3 */
  78.                 HAL_Delay(100);
  79.                 HAL_UART_Transmit(&huart1,a,5,0xFF);
  80.                 HAL_GPIO_TogglePin(OUT_1_GPIO_Port,OUT_1_Pin);               
  81.   }
  82.   /* USER CODE END 3 */
  83. }
HSXP063 发表于 2021-1-22 13:35 | 显示全部楼层
相关时钟都开了吗  现在是接收乱码还是一点接收不到?

评论

一点都收不到,我仿真看的时候发送寄存器是写入了值得  发表于 2021-1-22 14:15
开了时钟的,在我发的void HAL_UART_MspInit(UART_HandleTypeDef* huart)函数里面有 __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();  发表于 2021-1-22 14:07
weilaikeqi 发表于 2024-8-12 21:22 | 显示全部楼层
你好,解决了吗,我也遇到这个问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部