打印

使用stm32串口irda模式控制红外只能发送不能接收的问题

[复制链接]
4697|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jtx1900|  楼主 | 2013-3-18 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在串口初始化的基础上增加了irda功能的使能,但是只能发送,不能接收,进不了串口的接收中断,请问一下设置寄存器是不是还要考虑什么?
void uart_init(u32 pclk2,u32 bound)
{           
        float temp;
        u16 mantissa;
        u16 fraction;          
        temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
        mantissa=temp;                                 //得到整数部分
        fraction=(temp-mantissa)*16; //得到小数部分         
    mantissa<<=4;
        mantissa+=fraction;
        RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  
        RCC->APB2ENR|=1<<14;  //使能串口时钟
        GPIOA->CRH&=0XFFFFF00F;
        GPIOA->CRH|=0X000008B0;//IO状态设置
                  
        RCC->APB2RSTR|=1<<14;   //复位串口1
        RCC->APB2RSTR&=~(1<<14);//停止复位                     
        //波特率设置
        USART1->BRR=mantissa; // 波特率设置         
        USART1->CR1|=0X200C;  //1位停止,无校验位.
//#ifdef EN_USART1_RX                  //如果使能了接收
        //使能接收中断
        USART1->CR1|=1<<8;    //PE中断使能
        USART1->CR1|=1<<5;    //接收缓冲区非空中断使能                   
        MY_NVIC_Init(3,3,USART1_IRQChannel,2);//组2,最低优先级
//#endif

        USART1->CR2 &= 0x0FFF;        //LIEN STOP CLKEN清零
        USART1->CR3 &= 0xFFFB;           //通常模式
        USART1->CR3&=0xFFD7;         //不选择半双工        静止智能卡 SCEN HDSEL清零       
        USART1->CR3|=1<<1;         //红外模式使能
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:hhhh

12

主题

122

帖子

2

粉丝