野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20548|回复: 5

程序有点没看明白

[复制链接]
发表于 2016-3-4 16:39:16 | 显示全部楼层 |阅读模式
这段中断服务程序的逻辑没有看明白,尤其是USART_SendData(USARTx,ucTemp)这句话。
// 串口中断服务函数
void USART_IRQHandler(void)
{
  uint8_t ucTemp;
        if(USART_GetITStatus(USARTx,USART_IT_RXNE)!=RESET)  
        {               
                ucTemp = USART_ReceiveData(USARTx);
    USART_SendData(USARTx,ucTemp);   
        }         
}

回复

使用道具 举报

发表于 2016-3-4 16:43:49 | 显示全部楼层
USART_SendData(USARTx,ucTemp);   
这个是库函数,把ucTemp通过串口usartx发送出去
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-4 16:48:45 | 显示全部楼层
本帖最后由 11光辉岁月 于 2016-3-4 16:58 编辑
flyleaf 发表于 2016-3-4 16:43
USART_SendData(USARTx,ucTemp);   
这个是库函数,把ucTemp通过串口usartx发送出去

ucTemp = USART_ReceiveData(USARTx);
那为什么要用 USART_ReceiveData()返回接收到的内容呢?或者说从哪里接收到的数据。
这逻辑没有搞清楚。。。
回复 支持 反对

使用道具 举报

发表于 2016-3-4 20:35:44 | 显示全部楼层
作者应该是对USARTx进行了一次定义和赋值的,这个值可能等于USART1或者其他的类似的有效值
回复 支持 反对

使用道具 举报

发表于 2016-3-5 09:34:54 | 显示全部楼层
11光辉岁月 发表于 2016-3-4 16:48
ucTemp = USART_ReceiveData(USARTx);
那为什么要用 USART_ReceiveData()返回接收到的内容呢?或者说从 ...

这是库函数,库函数会从寄存器里读取数据
回复 支持 反对

使用道具 举报

发表于 2016-3-5 09:52:41 | 显示全部楼层
电脑的串口调试助手给单片机的串口发送数据,单片机接收到的数据放在串口的数据寄存器DR中,并且产生中断,在中断服务函数中,把串口接收到存在DR的数据读取存放到 uctemp这个变量中,然后调用库函数把这个数据发送出去,即发送回给电脑的串口调试助手。

这样的效果就是:串口调试助手发送了什么出去,如果发送成功的话,单片机马上返回什么数据。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 04:49 , Processed in 0.043039 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表