5

帖子

0

TA的资源

一粒金砂(中级)

21
 

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

不错哈

此帖出自stm32/stm8论坛

点评

不错学习  详情 回复 发表于 2013-5-3 16:49
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

22
 

vvv

 dddddd
此帖出自stm32/stm8论坛
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

23
 
学习了 哈
此帖出自stm32/stm8论坛
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

24
 

usart1和usart2 中断互相收数据

引用了你的代码,我想usart1输入中断后 发送到usart2,然后usart2通过串口助手发送数据给usart1,;
usart1的中断程序参照了你的方法,我在usart2那里可以收到;但是usart2发送数据,usart1就没反应。我的usart2中断程序不想要判断什么帧头 帧尾的,想直接收数据。你看看哪里错了啊
int main(void)
{
  SystemInit();
  Rcc_Configuration(); ////系统时钟配置
  NVIC_Configuration();    //中断向量配置
  UsartGPIO_Configuration();
  USART_Configuration();

   


while(1)
{
// USART_SendData(USART1, i);
}

}
void NVIC_Configuration(void)
{
 NVIC_InitTypeDef NVIC_InitStructure; //定义数据结构体
  
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);//将中断矢量放到Flash的0地址

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//设置优先级配置的模式,详情请阅读原材料中的文章

  //使能串口中断,并设置优先级
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure); //将结构体丢到配置函数,即写入到对应寄存器中



   //这个参数设置的是,STM32 MCU中43个中断通道的先占优先级
    /* Enable the USART2 Interrupt 串口2 */
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

 

}
void Rcc_Configuration(void)
{

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); 
}
中断:
void USART1_IRQHandler(void)
{
char i=0,j,t;
   //处理接收到的数据
    if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
    {
  /* Clear the USART1 Receive interrupt */
    /*    USART_ClearITPendingBit(USART1, USART_IT_RXNE);

while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
{
com1_buffer[i++]=USART_ReceiveData(USART1);
}
for(j=0;j<=i;j++)
USART1_Putc(com1_buffer[j]);  */
while(USART1_ReceiveChar()!=0xaa);//寻找帧头
    t=USART1_ReceiveChar();
    while(t!=0xbb)//若是没到帧尾就继续接收
    {com1_buffer[i++]=t;
    t=USART1_ReceiveChar();}
    for(j=0;j<(i-1);j++)
USART2_Putc(com1_buffer[j]);//把接收到的数据发送出
    USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清中断标识

}
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
//溢出-如果发生溢出需要先读SR,再读DR寄存器 则可清除不断入中断的问题
    {
        USART_ClearFlag(USART1,USART_FLAG_ORE);    //读SR
        USART_ReceiveData(USART1);                //读DR
    }


}
关键是下面的usart2中断,看有问题么
void USART2_IRQHandler(void)
{
char i=0,j,t;
   //处理接收到的数据
    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
    {  
  /* Clear the USART1 Receive interrupt */


    t=USART2_ReceiveChar();
    while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) != SET)//若是没到帧尾就继续接收
    {com2_buffer[i++]=t;
    t=USART2_ReceiveChar();}
    for(j=0;j<(i-1);j++)
USART1_Putc(com2_buffer[j]);//把接收到的数据发送出
    USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清中断标识





}

//溢出-如果发生溢出需要先读SR,再读DR寄存器 则可清除不断入中断的问题
    if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
    {
        USART_ClearFlag(USART2,USART_FLAG_ORE);    //读SR
        USART_ReceiveData(USART2);                //读DR
    }



}


请高手指教啊
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

25
 
hao ziliao hao hao xuexi
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

26
 

ddddddddddddddd

顶了  好帖
此帖出自stm32/stm8论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

27
 
tongwen
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

28
 

学习

学习了
此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

29
 
谢谢!对我有些帮助
此帖出自stm32/stm8论坛
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

30
 

收费的

怎么买啊???
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

31
 
感谢楼主啦
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

32
 
为啥还要花钱啊?
此帖出自stm32/stm8论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

33
 
无语。。。坚决不下载
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

34
 
垃圾也是收费?还是贡献给初学者!那是欺骗初学者吧 ?
此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

35
 
谢谢楼主分享,回帖是种美德
此帖出自stm32/stm8论坛
 
 
 

回复

260

帖子

0

TA的资源

一粒金砂(中级)

36
 
不管咋说,下了
此帖出自stm32/stm8论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

37
 
楼主不地道,要是都这样,新人还怎么学习啊
此帖出自stm32/stm8论坛
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

38
 
支持一下
此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

39
 

回复 21楼 411353021 的帖子

不错学习
此帖出自stm32/stm8论坛
 
 
 

回复

136

帖子

406

TA的资源

一粒金砂(高级)

40
 
就这玩意还收费,太搞笑了
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表