使用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);
|