打印
[AT32F421]

usart2中断进不去

[复制链接]
1090|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ykedu|  楼主 | 2023-5-4 20:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

void usart2_init(void)
{
                        gpio_init_type gpio_init_struct;
                        // enable the usart2 and gpio clock
                        crm_periph_clock_enable(CRM_USART2_PERIPH_CLOCK, TRUE);
                        // crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);// ÔÚgpio ÄÚÒѾ­¼ÓÔØ
                        gpio_default_para_init(&gpio_init_struct);
                        // configure the usart2 tx/rx pin
                        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
                        gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
                        gpio_init_struct.gpio_mode = GPIO_MODE_MUX ;//GPIO_MODE_MUX
                        gpio_init_struct.gpio_pins = GPIO_PINS_2 | GPIO_PINS_3;
                        gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
                        gpio_init(GPIOA, &gpio_init_struct);

                        gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE2, GPIO_MUX_1);
                        gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE3, GPIO_MUX_1);
                nvic_irq_enable(USART2_IRQn, 0, 0);
                        // configure usart2 param
                        usart_init(USART2, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
                        //------
                        usart_parity_selection_config(USART2,USART_PARITY_NONE);//ÎÞУÑé
                        //----------
                        usart_transmitter_enable(USART2, TRUE);//´®¿Ú·¢ËÍʹÄÜ
                        usart_receiver_enable(USART2, TRUE);//´®¿Ú½ÓÊÕʹÄÜ
                        // enable usart2 and usart1 interrupt
                        usart_interrupt_enable(USART2, USART_RDBF_INT, TRUE);
                        usart_interrupt_enable(USART2, USART_IDLE_INT, TRUE);
                        //-----------------------------
                //        usart_flag_clear(USART2, USART_RDBF_FLAG);
                        usart_enable(USART2, TRUE);
               
      gpio_bits_reset(GPIOA, GPIO_PINS_10);//ʹÄÜ 485 ½ÓÊÕ
}

void USART2_IRQHandler(void)
{
                send(0xa1);
                u8 tmp;         
                uint8_t clear;
                if(usart_flag_get(USART2, USART_RDBF_FLAG) != RESET)              // USART1
                {
                        tmp =USART2->dt;          // USART1        
                        data[bit++]=tmp;               
                        handle();
                }         
                if(usart_flag_get(USART2, USART_IDLEF_FLAG) != RESET)               // USART1
                {
                        clear=USART2->sts;                                              // USART1  
                        clear=USART2->dt;                                                                                                // USART1  
                        clear&=0;

                }
}

使用特权

评论回复
沙发
mark一江水| | 2023-5-5 10:40 | 只看该作者
大概看了哈,usart配置没问题,你再确认哈GPIOA的时钟是否有开?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝