完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于STM32CubeIDE的安装和使用,我在就不多说了,有兴趣去看我上一篇博客。以前一直在使用Keil 来编程,最近换到STM32 CUbeIDE 的过程中,发现在Keil 中使用的printf重定向函数,在STM32 CUbeIDE中居然失败了,经过一番查找,发现是定义的方式和Keil有点不一样,只是添加了预处理的条件进行了选择,具体的方法如下:
1、定义方式1 这种方式比较简单,如下定义数组,用于保存发送的数据。 1、u8定义其实就是uint8_t ,所以定义的数组为 uint8_t u_buf[64],数组大小可以自己根据实际情况定义,uint8_t 最大就是256了,但是一般来说,256就足够了。 2、 1、u8定义其实就是uint8_t ,所以定义的数组为 uint8_t u_buf[64],数组大小可以自己根据实际情况定义,uint8_t 最大就是256了,但是一般来说,256就足够了。 2、sprintf 把字符写入自己提前定义的 数组 **u_buf**中。 3、 __VA_ARGS__ 是一个可变参数的宏,实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。 要包含头文件, #include #include #include extern u8 u_buf[64]; //定义的数组,保存数据 #define printf(...) HAL_UART_Transmit((UART_HandleTypeDef *)&huart1, (uint8_t *)u_buf, sprintf((char*)u_buf,__VA_ARGS__), 0xFFFF); 2、定义方式2 这种方式就是大家常见的定义方式了,只是加了一个编译条件。不要忘记包含头文件, #include #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(&huart1,(uint8_t*)&ch, 1, 0xFFFF); return ch; } 3、STM32 CubeIDE 输出小数 |
|
|
|
只有小组成员才能发言,加入小组>>
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
529 浏览 2 评论
551 浏览 2 评论
信号发生器产生的正弦频率信号,用定时器进行捕获,当幅值低于3V后为什么MCU就无法捕获到了?
209 浏览 2 评论
876 浏览 2 评论
编码器模式下,中断内访问其他定时器cnt值,会导致进入中断次数丢失的原因?
859 浏览 2 评论
1332浏览 9评论
STM32出现error downloading following files怎么解决?
29浏览 3评论
stm32f103的RST复位后PWM就停止输出了,为什么?
38浏览 3评论
STM32G0空闲中断异常,且DMA接收不到数据是怎么回事?
27浏览 3评论
STM32F103用Timer3TRGO通道触发ADC,ADC在三路输出PWM高电平中间点采样,如何配置?
17浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 20:55 , Processed in 0.598449 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号