久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1841|回復: 7
收起左側

STM32F407串口相關問題

[復制鏈接]
ID:1039954 發表于 2022-7-27 16:17 | 顯示全部樓層 |閱讀模式
我想請問下STM32F407的USATT1 PA9 PA10與USART6(TTL)PC6 PC7有什么區別啊,同樣都是用cubeMX生成的,為什么USART1可以通訊,USART6就不行呢;參數都是這些參數,就引腳換了還有把AF7換成AF8了;
S0}C)G}9YK~Y64~]W457$%X.png
IXQ9]CK$0O4{C8$MMZ5QP[H.png
回復

使用道具 舉報

ID:248705 發表于 2022-7-27 18:31 | 顯示全部樓層
要不咱還是把工程發出來?這樣子大家只能靠猜
回復

使用道具 舉報

ID:1039954 發表于 2022-7-28 08:04 | 顯示全部樓層
USART1:
usart.c
#include "usart.h"
#include "stm32f4xx_hal.h"
#include <stdio.h>
UART_HandleTypeDef huart1;
void MX_USART1_UART_Init(void)
{


  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    Error_Handler();
  }
}


void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{


  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(uartHandle->Instance==USART1)
  {


    __HAL_RCC_USART1_CLK_ENABLE();


    __HAL_RCC_GPIOA_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_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


    HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(USART1_IRQn);


  }
}


void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{


  if(uartHandle->Instance==USART1)
  {


    __HAL_RCC_USART1_CLK_DISABLE();


    /**USART1 GPIO Configuration
    PA9     ------> USART1_TX
    PA10     ------> USART1_RX
    */
    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);




    HAL_NVIC_DisableIRQ(USART1_IRQn);
  
  }
}


int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}


int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}

main.c
#include "main.h"
#include "usart.h"
#include "gpio.h"

#define RXBUFFERSIZE  256
char RxBuffer[RXBUFFERSIZE];

void SystemClock_Config(void);
int main(void)
{

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_USART1_UART_Init();

  while (1)
  {

                printf("Zzz\n");
                        HAL_Delay(1000);
  }

}
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 4;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  {
    Error_Handler();
  }
}
void Error_Handler(void)
{
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

USART6

usart.c
#include "usart.h"
#include "stm32f4xx_hal.h"
#include <stdio.h>


UART_HandleTypeDef huart6;


void MX_USART6_UART_Init(void)
{
  huart6.Instance = USART6;
  huart6.Init.BaudRate = 115200;
  huart6.Init.WordLength = UART_WORDLENGTH_8B;
  huart6.Init.StopBits = UART_STOPBITS_1;
  huart6.Init.Parity = UART_PARITY_NONE;
  huart6.Init.Mode = UART_MODE_TX_RX;
  huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart6.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart6) != HAL_OK)
  {
    Error_Handler();
        }
}


void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{


  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(uartHandle->Instance==USART6)
  {


    __HAL_RCC_USART6_CLK_ENABLE();


    __HAL_RCC_GPIOC_CLK_ENABLE();
    /**USART6 GPIO Configuration
    PC6     ------> USART6_TX
    PC7     ------> USART6_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);


    /* USART6 interrupt Init */
    HAL_NVIC_SetPriority(USART6_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(USART6_IRQn);


  }
}


void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{


  if(uartHandle->Instance==USART6)
  {


    __HAL_RCC_USART6_CLK_DISABLE();


    /**USART6 GPIO Configuration
    PC6     ------> USART6_TX
    PC7     ------> USART6_RX
    */
    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);


    /* USART6 interrupt Deinit */
    HAL_NVIC_DisableIRQ(USART6_IRQn);
  /* USER CODE BEGIN USART6_MspDeInit 1 */


  /* USER CODE END USART6_MspDeInit 1 */
  }
}


int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart6, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}




int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart6, &ch, 1, 0xffff);
  return ch;
}
main.c
#include "main.h"
#include "usart.h"
#include "gpio.h"


/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#define RXBUFFERSIZE  256
char RxBuffer[RXBUFFERSIZE];


void SystemClock_Config(void);


int main(void)
{


  HAL_Init();


  SystemClock_Config();


  MX_GPIO_Init();
  MX_USART6_UART_Init();


  while (1)
  {


                printf("Zzzz\n");
                        HAL_Delay(1000);
  }


}


/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 4;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;


  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  {
    Error_Handler();
  }
}


/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{


  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}


回復

使用道具 舉報

ID:1039954 發表于 2022-7-28 08:07 | 顯示全部樓層
都是一樣的程序(系統自動生成的),我就加了一個fputc和fgetc函數,其他的沒什么變化了,就引腳不同,
回復

使用道具 舉報

ID:123289 發表于 2022-7-28 08:19 | 顯示全部樓層
細讀CPU的手冊上的相關章節,這個比較靠譜。
回復

使用道具 舉報

ID:1039954 發表于 2022-7-28 08:20 | 顯示全部樓層
文件太大了,上傳不了
回復

使用道具 舉報

ID:1039954 發表于 2022-7-28 08:45 | 顯示全部樓層
yzwzfyz 發表于 2022-7-28 08:19
細讀CPU的手冊上的相關章節,這個比較靠譜。

是的,我就是想找到關于這個芯片引腳資料來的,好對比他們的區別
回復

使用道具 舉報

ID:1039954 發表于 2022-7-28 14:54 | 顯示全部樓層
好吧,被自己無語到,原來是因為串口一和串口二引腳不同,導致接線位置不一樣,而我一直用的是串口一的串口,,,,
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品激情在线 | 91免费看片| 国产情侣一区 | 欧美a级成人淫片免费看 | 日韩精品一二三 | 91在线视频在线观看 | 久久9久 | 日日夜夜精品免费视频 | av大片在线观看 | 欧美一区二区 | 国产美女久久久 | 欧美激情精品久久久久久 | 日本一区二区不卡 | 欧美亚洲另类丝袜综合网动图 | 国产在线观看一区二区三区 | 91久久国产综合久久91精品网站 | 在线观看免费福利 | 免费看大片bbbb欧美 | 久久视频精品 | 精品国产一区二区国模嫣然 | 日本久久一区 | 亚洲一区综合 | 中文字幕不卡一区 | 黄a在线播放| 中午字幕在线观看 | www.国产视频| 久久久久久亚洲国产精品 | 精品国偷自产在线 | 国产 日韩 欧美 在线 | 久久久久久成人网 | 国产一级一级毛片 | 1000部精品久久久久久久久 | 久久不卡 | 国产精品成人久久久久 | 欧美一区二区三区电影 | 一级日批片| 中文字幕三区 | 精品国产一区二区三区久久久四川 | 日韩在线不卡 | 一区二区av| 九九视频网|