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');
}
}
uart7的时钟开启了吗?你代码的第二句 muyichuan2012 发表于 2022-12-26 15:25
uart7的时钟开启了吗?你代码的第二句
看起来像是开了UART4的外设时钟 本帖最后由 sobadman 于 2022-12-27 10:43 编辑
muyichuan2012 发表于 2022-12-26 15:25
uart7的时钟开启了吗?你代码的第二句
复制错了,工程中有开起uart7的时钟 本帖最后由 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 hoop 发表于 2022-12-27 19:30
代码有两个需要修改的地方
1)添加禁JTAG口的代码
PB3及PB4默认为JTAG口,使用PB3和PB4作为UART7的口时,一 ...
谢谢您,按照您的改完对了,我没想到pb3 4要同时禁JTAG功能,我以为直接开uart7复用脚就行,usart_flag_get这个错误也太低级了{:sweat:}
页:
[1]