完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
环境介绍
uart和usart在本质上没有区别,uart只能用于异步收发数据,而usart则可同时用于同步异步收发数据,usart比uart多出一根时钟线,用于同步数据. 这里介绍如何使用STM32Cube配置uart,选择uart4,模式设置为异步通信,其他的设置默认即可 下面简单配置一下时钟,采用外部晶振,配置如下: 接下来就是生成代码,打开project manager 选择code 然后点击下面这个选项,生成的代码会分别生成各个功能配置的c/h文件,否则会都生成在mian.c文件里 最后点击生成代码即可,生成的代码只是个框架,主要实现的功能还需要我们自己去填充用户代码 接下用Truestudio打开项目代码,打开main.c文件,在/*USER CODE BEGIN 1*/ /*USER CODE END 1*/中定义两个变量 uint8_t *txbuf; float a=12.0; 在while(1)循环中/*USER CODE BEGIN 3*/ /*USER CODE END 3*/之间填充 sprintf(txbuf,"HAL print float is:%f",a); HAL_UART_Transmit(&huart4,txbuf,strlen(txbuf),0xffff); HAL_Delay(1000); 此时直接编译烧录我们可以看到板子输出HAL print float is:,并不会输出浮点数,接下来我们点击工具栏project选择Build Setting 在下面的位置输入-u_printf_float就可以输出浮点数了 当然我这里采用的HAL库的串口输出,不能格式化输出,相对不方便所以用到了sprintf函数,下面介绍printf重定向方法,方便输出在/*USER CODE BEGIN 0*/和/*USER CODE END 0*/之间输出以下代码即可完成printf的重定向 #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart4, (uint8_t *)&ch, 1, 0xFFFF); return ch; } 这样我们就可以直接通过printf的方式输出浮点数了,用 printf("printf float is :%f"`,a); HAL_Delay(1000); 代替 sprintf(txbuf,"HAL print float is:%f",a); HAL_UART_Transmit(&huart4,txbuf,strlen(txbuf),0xffff); HAL_Delay(1000); 可以获得相同的输出结果。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1909 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1678 浏览 1 评论
1172 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
771 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1732 浏览 2 评论
1970浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
807浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
254浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
624浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 02:24 , Processed in 0.539806 second(s), Total 44, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号