最近我在使用stmcube的usart功能時
想要把他的code 複製到另一個專案,
但是發現在原本的專案中可以做 HAL_UART_receive 和 HAL_UART_transmit
但是將他的宣告和定義複製到另一個專案時:
static void MX_GPIO_Init(void);static void MX_USART6_UART_Init(void);
static void MX_GPIO_Init(void){
/* GPIO Ports Clock Enable */ __HAL_RCC_GPIOG_CLK_ENABLE();
}
static void MX_USART6_UART_Init(void){
huart6.Instance = USART6; huart6.Init.BaudRate = 9600; 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(__FILE__, __LINE__); }
卻跑不動了,想請問這樣子的一個更動除了上述的函數還有哪些會更動,而且是我可以去修改的,
我看了很多檔案,看起來都一樣,不知道哪裡出錯了
是同一塊板子的不同project
如果是同一块板子,那就排除了硬件问题。
建议进一步检查两点:1 是否有其他需要设置的地方影响了UART功能 2 两个project初始化代码编译之后是否一样。
我發現問題了!
clock 的設置其實不一樣
而且BSPINIT 裡面有點差異
好像是
if(huart->Instance==USART6)
少了else,而變成
else if(huart->Instance==USART6)就收的到了,不知為何