初学者,请问串口发送数据的问题

2019-08-17 02:53发布

在源码里面看到了这一段代码
//串口发送数据
void Send_Test(void)
{
         u8 i;
         for(i=0;i<8;i++)
         {
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0xFF);
         }
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x82);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0xA6);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x7C);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x03);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x14);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x39);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x03);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x00);
         while(!(USART3->SR & USART_SR_TXE));
         USART3->DR=(u32) ((u8*)0x75);
         
}

请问 (USART3->SR & USART_SR_TXE  这个是什么意思呢?还有在源码里面的这一部分有个数组的写法,现在找不到了,问问有没有人知道是在哪里出现的这个sendtest函数啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
gc475668754
1楼-- · 2019-08-17 22:11
 精彩回答 2  元偷偷看……
gc475668754
2楼-- · 2019-08-17 23:07
黎明雨林 发表于 2017-7-5 19:37
应该是宏定义了#define  USART_SR_TXE   0x80,因为TXE是位7。程序中“与”这个值后看结果,是1就说明发送 ...

这下想明白了,谢谢前辈啊~~~感激不尽
黎明雨林
3楼-- · 2019-08-17 23:17
gc475668754 发表于 2017-7-5 20:27
这下想明白了,谢谢前辈啊~~~感激不尽

嗯,理论上是只要是用户定义的都可以改,多看程序吧,看多就会了
黎明雨林
4楼-- · 2019-08-18 02:15
gc475668754 发表于 2017-7-5 20:27
这下想明白了,谢谢前辈啊~~~感激不尽

USART->SR是固定的,是串口的状态寄存器调用,这个不能改
gc475668754
5楼-- · 2019-08-18 05:54
黎明雨林 发表于 2017-7-5 23:52
USART->SR是固定的,是串口的状态寄存器调用,这个不能改

嗯嗯,是的,一开始吧TXE这个参数作为一个变量来看了,后来想明白了,刚学习确实有些困难,谢谢前辈不吝赐教~~
randomevent
6楼-- · 2019-08-18 07:13
 精彩回答 2  元偷偷看……

一周热门 更多>