1 通讯的三种方式
2异步同步的区别
3 代码
1 通讯的三种方式
1)单工通讯 :一端只能是接收 一端也只能发送 只能单向传输 比如 打印机
2)半双工 :两边都可以作为发送和接收 但是 是在某个时刻 比如 对讲机 一端是接收而一端只能发送 反过来也是可以的
3)全双工 :也就是和半双工的时间端相反 任意时刻都可以。
2异步同步的 区别 我们只需看它本身有没有自带时钟 如果有 就是 同步 没有 就 不是
3 代码
时钟 我们用的是 GPIOA 并且 用了 串口一
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1,ENABLE);
GPIOA 结构体成员配置 PA10 是接收(RX)PA9 发送 (TX)
GPIO_InitStruct.GPIO_Mode =GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_10;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
配置的话 我们需要看相关中文参考手册
串口的结构体配置
USART_InitStruct.USART_BaudRate =115200;
USART_InitStruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode =USART_Mode_Rx|USART_Mode_Tx;
USART_InitStruct.USART_StopBits =USART_StopBits_1;
USART_InitStruct.USART_Parity =USART_Parity_No;
USART_InitStruct.USART_WordLength =USART_WordLength_8b;
USART_Init(USART1,&USART_InitStruct);
引用的一个函数 重定向
int fputc(int ch, FILE *stream)
{
USART_SendData(USART1,(uint16_t)ch);
while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
return ch;
}
重定向并没那么神秘 意思就是 重新写一个函数 实则 实则 c语言的 pinrtf 就是调用这个的
详细代码
请加我 的 绿马 带上你的备注 哞哞一样
版权声明:本文为CSDN博主「*(*(arr+i)+j)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_59349642/article/details/122642545
1 通讯的三种方式
2异步同步的区别
3 代码
1 通讯的三种方式
1)单工通讯 :一端只能是接收 一端也只能发送 只能单向传输 比如 打印机
2)半双工 :两边都可以作为发送和接收 但是 是在某个时刻 比如 对讲机 一端是接收而一端只能发送 反过来也是可以的
3)全双工 :也就是和半双工的时间端相反 任意时刻都可以。
2异步同步的 区别 我们只需看它本身有没有自带时钟 如果有 就是 同步 没有 就 不是
3 代码
时钟 我们用的是 GPIOA 并且 用了 串口一
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1,ENABLE);
GPIOA 结构体成员配置 PA10 是接收(RX)PA9 发送 (TX)
GPIO_InitStruct.GPIO_Mode =GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Mode =GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_10;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
配置的话 我们需要看相关中文参考手册
串口的结构体配置
USART_InitStruct.USART_BaudRate =115200;
USART_InitStruct.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode =USART_Mode_Rx|USART_Mode_Tx;
USART_InitStruct.USART_StopBits =USART_StopBits_1;
USART_InitStruct.USART_Parity =USART_Parity_No;
USART_InitStruct.USART_WordLength =USART_WordLength_8b;
USART_Init(USART1,&USART_InitStruct);
引用的一个函数 重定向
int fputc(int ch, FILE *stream)
{
USART_SendData(USART1,(uint16_t)ch);
while( USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
return ch;
}
重定向并没那么神秘 意思就是 重新写一个函数 实则 实则 c语言的 pinrtf 就是调用这个的
详细代码
请加我 的 绿马 带上你的备注 哞哞一样
版权声明:本文为CSDN博主「*(*(arr+i)+j)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_59349642/article/details/122642545
暂无评论