打印

关于STM32串口问题

[复制链接]
529|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电员师|  楼主 | 2018-6-30 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在弄串口这方面问题时遇到几个疑问:
1、关于接收中断代码如下
void USART1_IRQHandler(void)
{
        uint8_t ch;        
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {         
           ch = USART_ReceiveData(USART1);
                  printf( "%c", ch );           
}          }
判断是接受中断就进行接收数据,完了没有清除中断标志位,是不是退出函数之后会自动清除?还是不需要清除也不会有影响?这里的接受和发送是接收到一个字节就立刻发送一个字节,而不是等接收到一串字符再发送,发送缓冲区只是存一个字节,对吗?

2、关于重定向
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);               
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return (ch);
}

int fgetc(FILE *f)
{
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
return (int)USART_ReceiveData(USART1);
}

对int fputc(int ch, FILE *f)这个函数我的理解是C库自带有printf函数,不过不是发送到串口,需要我们重新定义把数据移动发送缓冲区进行发送。

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);这一句是判断是否发送完成。不知道对不对?

3、习惯上发送数据时和51一样不用中断,只是判断是否发送完成。如果是用中断来发送是否也和接受一样,进入中断,判断是接受还是发送的中断,然后对数据处理,接着退出中断函数?

求大神们指点!!!

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

471

主题

480

帖子

0

粉丝