硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode
1 新建cubemax工程
1.1 配置系统时钟树
1.2 UART配置
查阅原理图,可知G0开发板的UART2连接到了板卡搭载的ST-Link上,故开启UART即可
UART2对应着PA2,PA3引脚
展开connectivity,找到USART2,模式选择异步通信模式Asynchronous,注意波特率为115200(默认即可)
使能串口中断
1.3 导出工程
…略
2 代码
2.1 定义数组变量
uint8_t main_code[]="code is running!\n";
uint8_t rec_tra_data[1]; /*定义一个数组,用于存放接收和发送的数据*/
2.2 重写中断回调函数
/* USER CODE BEGIN 4 */
/*串口中断回调函数*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart == &huart2) /*判断中断源*/{HAL_UART_Transmit(&huart2, (uint8_t *)rec_tra_data, 1, 0xffff); /*发送所接收到的数据*/HAL_UART_Receive_IT(&huart2,(uint8_t *)&rec_tra_data,1); /*再次开启串口接收中断*/}
}
/* USER CODE END 4 */
2.3 main.c函数
int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART2_UART_Init();HAL_UART_Transmit(&huart2,"\nFlash Load finished!\n",22,0xffff); /*程序下载完成*/HAL_UART_Receive_IT(&huart2,(uint8_t *)&rec_tra_data,1); /*开启串口接收中断*/while (1){HAL_UART_Transmit(&huart2,(uint8_t *)main_code ,strlen(main_code), 0xffff); /*主程序*//*其中strlen()函数用于计算参数字节长度*/HAL_Delay(1000);}
}