新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2019-9-14
- 在线时间
- 5 小时
|
配置程序
void Uart1_Configuration(void)
{
GPIO_Init(GPIOA, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOA, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST); //需要配置GIPO
// GPIO_ExternalPullUpConfig(GPIOA, GPIO_PIN_4, ENABLE);
// GPIO_ExternalPullUpConfig(GPIOA, GPIO_PIN_5, ENABLE);
//--配置外设时钟使能
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1,ENABLE); //开启外设时钟
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
UART1_DeInit();
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, \
UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE); //发送接收使能 偏差 中文资料 P279 表49
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
UART1_Cmd(ENABLE);
enableInterrupts();
}
中断程序如下
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
if(UART1_GetITStatus(UART1_IT_RXNE) != RESET) //检查指定的UART1中断是否发生。
{
UART1_SendData8(UART1_ReceiveData8()); //将接收的数据再用串口发送出去
UART1_ClearITPendingBit(UART1_IT_RXNE); //清除UART1挂起标志
}
UART1_ClearITPendingBit(UART1_IT_RXNE);
}
其它外设均未使用
主要问题: 波特率115200(使用内部晶振16M或外部16M均出现如下结果)以下上位机按一次性发送完8个数据
1:上位机发送数据(16进制数据)00 00 00 00 00 00 00 00 无法通过测试 上位机接收到数据: 00 00 00 00 共4个byte 与在线调试数据一致 丢失4个00数据
2:上位机发送数据(16进制数据)10 00 00 00 00 00 00 01 无法通过测试 上位机接收到数据: 10 00 00 00 01 共5个byte 丢失3个00数据
3:上位机发送数据(16进制数据)00 01 02 03 04 05 06 07 通过测试 上位机接收到数据: 00 01 02 03 04 05 06 07 正常
4:上位机发送数据(16进制数据)01 01 01 01 01 01 01 01 通过测试 上位机接收到数据: 01 01 01 01 01 01 01 01 正常
5:上位机发送数据(16进制数据)02 02 02 02 02 02 02 02 通过测试 上位机接收到数据: 02 02 02 02 02 02 02 02 正常
6:上位机发送数据(16进制数据)07 06 05 04 03 02 01 00 无法通过测试 上位机接收到数据:07 06 05 04 03 02 01 第8个byte丢失
7:上位机单独一个一个数据发送,任意数据均不存在丢失;
8 一帧式发送,将波特率修改为9600,上位机接收数据同上述一致。
有遇到相同问题有大神位,有何解决办法?
|
|