打印
[AT32F403/403A]

uart6无法发送数据

[复制链接]
846|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
firefly2k|  楼主 | 2022-7-26 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用48脚的AT32F403A,想用UART6,但是写的程序无法发送数据。如果改成UART2就可以发送了(不过是去掉gpio_pin_remap_config这行配置),请问是什么原因?
发送数据是用的下面的程序:
while(usart_flag_get(USART6, USART_TDBE_FLAG) == RESET);
usart_data_transmit(USART6, 'H');

具体配置如下:
  crm_periph_clock_enable(CRM_USART6_PERIPH_CLOCK, TRUE);
  crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
       
  /* configure the USART6 tx 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_init_struct.gpio_pins = GPIO_PINS_4;
  gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  gpio_init(GPIOA, &gpio_init_struct);

  /* configure the USART6 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_INPUT;
  gpio_init_struct.gpio_pins = GPIO_PINS_5;
  gpio_init_struct.gpio_pull = GPIO_PULL_UP;
  gpio_init(GPIOA, &gpio_init_struct);

  gpio_pin_remap_config(USART6_GMUX, TRUE);                //TX:PA4        RX:PA5

  /* configure USART6 param */
  usart_init(USART6, 115200, USART_DATA_8BITS, USART_STOP_1_BIT);
  usart_transmitter_enable(USART6, TRUE);
  usart_receiver_enable(USART6, TRUE);

  usart_enable(USART6, TRUE);



使用特权

评论回复
沙发
lvben5d| | 2022-7-26 14:56 | 只看该作者
本帖最后由 lvben5d 于 2022-7-26 15:01 编辑

你这个 REMAP了,就要对照手册 看看remap:引脚 到底是不是GPIOA 的GPIO_PINS_4 GPIO_PINS_5就好了     引脚remap后  不是常规IO口的话,那还是归类于 MUX 复用哦!
我用的是 F425,   例程里面 应该还有个 gpio_pin_mux_config(GPIOX, GPIO_PINS_SOURCEX, GPIO_MUX_X);    楼主估计是没仔细看EXZAMPLE 吧

使用特权

评论回复
板凳
firefly2k|  楼主 | 2022-7-27 14:26 | 只看该作者
谢谢!您说的没错,是这个问题

使用特权

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

本版积分规则

41

主题

186

帖子

1

粉丝