我用PA9/PA10 通讯,
初始化如下:
gpio_init_type gpio_init_struct;
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_USART1_PERIPH_CLOCK, TRUE);
gpio_default_para_init(&gpio_init_struct);
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_9 | GPIO_PINS_10;
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
gpio_init(GPIOA, &gpio_init_struct);
// config usart1 iomux //
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE9, GPIO_MUX_1);
gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE10, GPIO_MUX_1);
nvic_irq_enable(USART1_IRQn, 0, 0);
usart_init(USART1, 9600, USART_DATA_8BITS, USART_STOP_1_BIT);
usart_transmitter_enable(USART1, TRUE);
usart_receiver_enable(USART1, TRUE);
usart_interrupt_enable(USART1, USART_RDBF_INT, TRUE);
usart_enable(USART1, TRUE);
// ------------------------------------------------------------------------------------
在中断里接收:
// ------------------------------------------
// 函数名称: USART1_IRQHandler
// 函数功能: USART 收发中断
// 入口参数: 无
// 出口参数: 无
// 其它说明: 无
// -------------------------------------------
void USART1_IRQHandler(void)
{
unsigned char IIRValue;
if(usart_flag_get(USART1, USART_RDBF_FLAG) != RESET)
{
IIRValue=usart_data_receive(USART1);
sCOM.cRBTime=1;
if(sCOM.cRxdH<MAX_RXD)
{ sCOM.cRData[sCOM.cRxdH++]=IIRValue;
}
}
}
// -----------------------------------------------------------------------
用上位机串口助手发送: 0x33 仅发一个字节;
仿真器在接收中断中观察数据,两次进入中断收到的数据分别为:8EH,FCH
搞了半天,没收过正确的,确认过硬件没有问题。
所以想问一下,各位这是什么原因造成的?
|
检查一下电路,如果是AT START的话,PA9/PA10接在了 AT Link EZ了。