UART串口通信
来源:互联网 发布:淘宝我的空间怎么设置 编辑:程序博客网 时间:2024/05/21 12:42
1 平时TX,RX,为高电平,双方一旦检测到线路上是低电平,表示数据传输开始了。
发送结束时候,结束位为高电平,可以是1个,1.5个或者2个高电平。
2 串口通信相关的函数,除了初始化的函数,其他的就是对两个寄存器操作。
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data){ /* Transmit Data */ USARTx->DR = (Data & (uint16_t)0x01FF);}
我们写的其他函数,比如SendByte()函数,SendString()函数,或者SendArray()函数,都是基于这个函数的。
比如
void Usart_SendByteArray(USART_TypeDef *pUSARTx, char *p, uint8_t n){ uint8_t i; for (i = 0; i < n; ++i) { Usart_SendByte(pUSARTx, *(p+i)); while(USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);}
而对于uint16_t USART_ReceiveData(USART_TypeDef* USARTx) 这个函数,我们好奇它是怎么写入数据的。这个函数只是往USARTx->DR写入数据。我们所需要考虑的就是往这个寄存器写入数据,之后的传输是硬件来实现的。
同样我们想接收来自串口的数据,只需要关注uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
这个函数就好
uint16_t USART_ReceiveData(USART_TypeDef* USARTx){ /* Receive Data */ return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);}
这个函数读取USARTx->DR寄存器的值,然后返回。我们在写我们的函数的时候,基于这个函数去写即可。
小结:无论我们是读取数据还是写入数据发送,我们只需要基于库函数操作,写我们的函数即可。库函数是对DR寄存器操作,写入或者读取。这个寄存器实际上是两个寄存器。不过其他的东西我们暂时不需要关注。
阅读全文
0 0
- UART串口通信
- CC2430 串口通信UART
- 串口通信UART--读书笔记
- UART串口通信
- UART串口通信
- STM32 --UART串口通信
- C51 UART 串口通信
- UART串口通信
- UART串口通信
- UART串口通信
- 51单片机 UART串口通信
- RS232与UART串口通信
- CC2530之UART串口通信
- Uart串口通信的理解
- stm32的UART串口通信
- 串口通信 UART通信之VHDL描述
- 串口通信 UART通信之VHDL描述
- 51单片机UART串口通信开发总结
- 2输入一个字符判断是否属于a-zA-Z之间如果是请是属于a-z还是A-Z并且输出值。
- 朴素贝叶斯分类器
- python里使用正则表达式的前向搜索否定模式
- 大规模机器学习(二)
- codeforces 877D
- UART串口通信
- mysql数据库操作(二)
- BZOJ4256 推箱子
- vim 宏
- 获取文件信息
- okHttp单例封装
- JDK环境的搭建
- {A} + {B}
- 【网易】射击游戏