打印
[AT32F403/403A]

uart7配置出错了,帮忙看下

[复制链接]
828|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sobadman|  楼主 | 2022-12-26 13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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的时钟

使用特权

评论回复
5
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

使用特权

评论回复
6
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这个错误也太低级了

使用特权

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

本版积分规则

17

主题

45

帖子

1

粉丝