完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
第三天串口调试
虽然任务模块不涉及串口调试,但是 串口调试还是对我们debug很有用 这里还是顺便做一下串口 stmcubemx 首先还是查看板子的原理图 可以看到串口分别是PA9、PA10 如果想用别的 usart 要自己更改跳帽的连接 随后在cubemx中选择PA9 PA10 两个引脚都先选择usart功能,防止引脚复用出现问题 现在两个引脚应该是黄色 然后再选择usart1 两个引脚变成绿色 选择模式异步通信 波特率9600 校验位8 停止位1 然后生成代码,硬件配置就完成了 当人你也可以把串口中断选上 keil5代码 串口调试就选择正常的非中断模式进行(阻塞模式) 函数原型是 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); 带 IT 的是中断方式 函数解析 HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 参数分别是串口,传送的数据,传送数据的大小,超时时间 其中超时时间是可以任意设置的,你可以设置成最大值 程序怕出现问题才会出现这个超时时间 如果选用中断方式则不会出现这个问题 首先添加一个头文件 #include "stdio.h" 然后设置一个全局变量 uint8_t send_date[64] = {0}; keil5中一定要注意定义变量的时候对变量赋初值 否则会引发不必要的麻烦 最后是main函数中的内容 int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { //串口调试 sprintf((char *)send_date,"test daten"); HAL_UART_Transmit(&huart1, send_date, sizeof(send_date), 100); //HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); HAL_Delay(500); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } sprintf函数是在stdio.h中定义的,属于赋值函数,同时可以将变量赋值进去 很方便 个人不太喜欢修改printf函数,感觉比较麻烦,还要修改底层的重定义 效果 打开串口调试助手设置相应的波特率 灯亮是因为day2中GPIO的实验 没有把那三个RGB通道关闭,导致的 你也可以在程序中关掉就不会亮了 给孩子点个赞吧 |
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
598浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:58 , Processed in 1.189595 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号