sobadman 发表于 2022-12-26 13:56

uart7配置出错了,帮忙看下

本帖最后由 sobadman 于 2022-12-27 10:44 编辑

void gpio_11init(void)
{
gpio_init_type gpio_init_struct ;
/*第一步:打开外设的时钟*/
crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK,TRUE);
crm_periph_clock_enable(CRM_UART7_PERIPH_CLOCK,TRUE);
crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK,TRUE);

gpio_pin_remap_config(UART7_GMUX,TRUE);
gpio_init_struct.gpio_drive_strength=GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_mode=GPIO_MODE_INPUT;
gpio_init_struct.gpio_out_type=GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_pins=GPIO_PINS_3;
gpio_init_struct.gpio_pull=GPIO_PULL_NONE;
gpio_init(GPIOB, &gpio_init_struct);

gpio_init_struct.gpio_drive_strength=GPIO_DRIVE_STRENGTH_STRONGER;
gpio_init_struct.gpio_mode=GPIO_MODE_MUX;
gpio_init_struct.gpio_out_type=GPIO_OUTPUT_PUSH_PULL;
gpio_init_struct.gpio_pins=GPIO_PINS_4;
gpio_init_struct.gpio_pull=GPIO_PULL_NONE;
gpio_init(GPIOB, &gpio_init_struct);

nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
nvic_irq_enable(UART7_IRQn, 0, 0);

usart_init(UART7, 115200, USART_DATA_8BITS, USART_STOP_1_BIT);
usart_transmitter_enable(UART7, TRUE);
usart_receiver_enable(UART7, TRUE);


usart_interrupt_enable(UART7, USART_TDBE_INT, TRUE);
usart_interrupt_enable(UART7, USART_RDBF_INT, TRUE);
usart_enable(UART7, TRUE);

}
void UART7_IRQHandler()
{
if(usart_flag_get(UART7,USART_RDBF_INT)!=RESET)
{
    at32_led_toggle(LED3);
}
   if(usart_flag_get(UART7,USART_TDBE_INT)!=RESET)
{
   at32_led_toggle(LED4);
   usart_data_transmit(UART7,'a');
}
}


muyichuan2012 发表于 2022-12-26 15:25

uart7的时钟开启了吗?你代码的第二句

feiyinglala 发表于 2022-12-26 22:59

muyichuan2012 发表于 2022-12-26 15:25
uart7的时钟开启了吗?你代码的第二句

看起来像是开了UART4的外设时钟

sobadman 发表于 2022-12-27 10:32

本帖最后由 sobadman 于 2022-12-27 10:43 编辑

muyichuan2012 发表于 2022-12-26 15:25
uart7的时钟开启了吗?你代码的第二句
复制错了,工程中有开起uart7的时钟

hoop 发表于 2022-12-27 19:30

本帖最后由 hoop 于 2022-12-27 19:31 编辑

代码有两个需要修改的地方
1)添加禁JTAG口的代码
PB3及PB4默认为JTAG口,使用PB3和PB4作为UART7的口时,一定要调用如下函数禁JTAG功能。
gpio_pin_remap_config(SWJTAG_GMUX_010,TRUE);
2)中断函数内usart_flag_get带错参数
if(usart_flag_get(UART7,USART_RDBF_INT)!=RESET)中的USART_RDBF_INT需要修改为USART_RDBF_FLAG
if(usart_flag_get(UART7,USART_TDBE_INT)!=RESET)中的USART_RDBF_INT需要修改为USART_TDBE_FLAG

sobadman 发表于 2022-12-28 13:50

hoop 发表于 2022-12-27 19:30
代码有两个需要修改的地方
1)添加禁JTAG口的代码
PB3及PB4默认为JTAG口,使用PB3和PB4作为UART7的口时,一 ...

谢谢您,按照您的改完对了,我没想到pb3 4要同时禁JTAG功能,我以为直接开uart7复用脚就行,usart_flag_get这个错误也太低级了{:sweat:}
页: [1]
查看完整版本: uart7配置出错了,帮忙看下