OpenEdv-开源电子网

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

PA8不设置串口一中断接收正常,PA8设为推挽输出中断接收没反应

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-5-9
在线时间
1 小时
发表于 2016-5-9 21:35:00 | 显示全部楼层 |阅读模式
1金钱
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;//IO状态设置
        GPIOA->CRH|=0X000008B0;//IO状态设置

       /*设置成以下两行,串口中断接收没反应*/       

//        GPIOA->CRH&=0XFFFFF000;//IO状态设置  
//        GPIOA->CRH|=0X000008B3;//IO状态设置
       
        RCC->APB2RSTR|=1<<14;   //复位串口1
        RCC->APB2RSTR&=~(1<<14);//停止复位                     
        //波特率设置
        USART1->BRR=mantissa; // 波特率设置         
        USART1->CR1|=0X200C;  //1位停止,无校验位.
#if EN_USART1_RX                  //如果使能了接收
        //使能接收中断
        USART1->CR1|=1<<8;    //PE中断使能
        USART1->CR1|=1<<5;    //接收缓冲区非空中断使能                   
        MY_NVIC_Init(3,3,USART1_IRQChannel,1);//组2,最低优先级
#endif
        RS485_TX1_EN=0;
}
int main(void)
{        Stm32_Clock_Init(9);        //系统时钟设置
        uart_init(72,9600);                 //串口初始化为9600
        delay_init(72);                            //延时初始化
        while(1)
        {
                        if(USART_RX_STA&0x8000)
                        {               
                                USART_RX_STA=0;
                                //printf_out_flag=1;
                                USART1_Send_Data("123456789",9);//发送开机数据
                        }
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-9 21:52:32 | 显示全部楼层
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-5-9
在线时间
1 小时
 楼主| 发表于 2016-5-10 08:00:14 | 显示全部楼层
#define RS485_TX1_EN                PAout(8)       
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-5-9
在线时间
1 小时
 楼主| 发表于 2016-5-10 08:00:42 | 显示全部楼层
xkwy 发表于 2016-5-9 21:52
RS485_TX1_EN是什么?

#define RS485_TX1_EN                PAout(8)       
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-5-10 08:23:29 | 显示全部楼层
bluefeather 发表于 2016-5-10 08:00
#define RS485_TX1_EN                PAout(8)

我估计你是使用PA8把485的发送或者接收给禁止了
485是半双工总线,同一时刻只能发或者收
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 14:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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