你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

利用IAR环境实现STM32串口打印的函数代码

[复制链接]
风中的IT 发布时间:2015-1-7 11:37
在用STM32用作开发时,网上例程都是KEIL下运行的,但是现在好多都是IAR下运行,在研发中加入串口打印便于调试,以下是printf函数的定义,已通过验证


int fputc(int ch, FILE *f)
{
        /* 写一个字节到USART1 */
        USART_SendData(USART1, (uint8_t) ch);

        /* 等待发送结束 */
        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
        {}

        return ch;
}

/*
*********************************************************************************************************
*        函 数 名: fgetc
*        功能说明: 重定义getc函数,这样可以使用scanff函数从串口1输入数据
*        形    参: 无
*        返 回 值: 无
*********************************************************************************************************
*/
int fgetc(FILE *f)
{
        /* 等待串口1输入数据 */
        while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

        return (int)USART_ReceiveData(USART1);
}


收藏 评论23 发布时间:2015-1-7 11:37

举报

23个回答
风中的IT 回答时间:2015-1-7 11:38:23
已通过验证
最初的梦想! 回答时间:2015-1-7 11:44:32
以后会用到,很好的代码
QianFan 回答时间:2015-1-7 11:46:30
重定向?IAR的重定向是这个函数吗?
风中的IT 回答时间:2015-1-7 12:09:16
QianFan 发表于 2015-1-7 11:46
重定向?IAR的重定向是这个函数吗?

是啊,已通过验证
晓枫VS枯叶 回答时间:2015-1-7 12:14:56
keil重定向的都是那几句,不过关于半主机的那段代码不能用在IAR上可以用宏定义屏蔽,也不会影响在keil上的使用
  1. #if defined ( __CC_ARM   )
  2. #pragma import(__use_no_semihosting)            
  3. //标准库需要的支持函数                 
  4. struct __FILE
  5. {
  6.         int handle;

  7. };

  8. FILE __stdout;      
  9. //定义_sys_exit()以避免使用半主机模式   
  10. _sys_exit(int x)
  11. {
  12.         x = x;
  13. }
  14. #endif
  15. //重定义fputc函数
  16. int fputc(int ch, FILE *f)
  17. {      
  18.         while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
  19.     USART1->DR = (u8) ch;      
  20.         return ch;
  21. }
复制代码

这样keil和IAR都能用,不用改什么东西!
风中的IT 回答时间:2015-1-7 12:23:29
晓枫VS枯叶 发表于 2015-1-7 12:14
keil重定向的都是那几句,不过关于半主机的那段代码不能用在IAR上可以用宏定义屏蔽,也不会影响在keil上的 ...

你的这个我试试看啊,之前我把keil教程的代码复制到IAR下不能用
白日衣衫尽 回答时间:2015-1-7 12:33:03
很好的代码啊,找了好久 终于找到了
hahaha007 回答时间:2015-1-7 12:35:05
很不错,先mark一下
晓枫VS枯叶 回答时间:2015-1-7 12:44:25
我在IAR上和keil上都试过,可以用的,你再试一下!
123下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版