OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3649|回复: 4

为何串口能同时发送多个字节??

[复制链接]

9

主题

19

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2016-12-1
在线时间
11 小时
发表于 2017-3-24 20:24:54 | 显示全部楼层 |阅读模式
10金钱
本人刚刚学完51单片机,知道串口每次只能发送一个字节的数据,32是不是一次能发送多个字节呢?程序如下,就是我发送aaaaaaa这7个字节,电脑也能显示这7个字节出来,是不是进行了7次中断呢?求大神们解决,小弟感激不尽



#include "stm32f10x.h"

void USART_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
USART_InitTypeDef  USART_InitStruct;
NVIC_InitTypeDef   NVIC_InitStruct;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);   //´®¿ÚºÍio¿ÚµÄʱÖÓʹÄÜ

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);//io¿ÚģʽÉèÖã¬ÊÇʲôģʽ²é¿´stm32ÖÐÎIJο¼ÊÖ²á

GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);//io¿ÚģʽÉèÖã¬ÊÇʲôģʽ²é¿´stm32ÖÐÎIJο¼ÊÖ²á

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_Parity=USART_Parity_No;
USART_InitStruct.USART_StopBits=USART_StopBits_1;
USART_InitStruct.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART_InitStruct);//´®¿ÚµÄ³õʼ»¯

USART_Cmd(USART1,ENABLE);//ʹÄÜ´®¿Ú

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//´®¿ÚÖжϵĿªÆô

NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStruct);//Öжϳõʼ»¯

}
void  USART1_IRQHandler(void)
{
   int res,k=0;
    if(USART_GetITStatus(USART1,USART_IT_RXNE))//Öжϱê־λѰÕÒ
  {
    res=USART_ReceiveData(USART1);
     USART_SendData(USART1,res);
  }
  
}
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
USART_INIT();
while(1);
}

最佳答案

查看完整内容[请看2#楼]

是的 开启了接收中断,接收一个字节中断一次,因为串口中断里面你把接收到的字符又发送出去,所以你发出去的,电脑端也会收到
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2017-3-24 20:24:55 | 显示全部楼层
是的  开启了接收中断,接收一个字节中断一次,因为串口中断里面你把接收到的字符又发送出去,所以你发出去的,电脑端也会收到
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-2-10
在线时间
6 小时
发表于 2017-3-24 23:14:59 | 显示全部楼层
是的,依然是一个字节一个字节收发的。这是串口通信协议,用啥芯片都是遵守这个协议的。只是芯片的操作形式有区别
回复

使用道具 举报

2

主题

171

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3792
金钱
3792
注册时间
2016-6-26
在线时间
276 小时
发表于 2017-3-27 07:34:20 | 显示全部楼层
一次中断接收一个字节。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2017-3-27 09:38:59 | 显示全部楼层
楼主的问题和内容   看的让人一愣一愣的
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 17:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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