新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2019-6-11
- 在线时间
- 1 小时
|
1金钱
H743开发板,参考寄存器版例程,将串口2模仿串口1进行配置,只修改了端口和外设时钟至APB1LENR,pclk2和pclk1均为100M,看了下其他部分并无差别,为什么无法通信呢?
#if EN_USART2_RX
u8 USART2_RX_BUF[USART_REC_LEN];
u16 USART2_RX_STA=0;
void USART2_IRQHandler(void)//中断服务程序
{
u8 res;
#if SYSTEM_SUPPORT_OS
OSIntEnter();
#endif
if(USART2->ISR&(1<<5))
{
res=USART2->RDR;
if((USART2_RX_STA&0x8000)==0)
{
if(USART2_RX_STA&0x4000)
{
if(res!=0x0a)USART2_RX_STA=0;
else USART2_RX_STA|=0x8000;
}else
{
if(res==0x0d)USART2_RX_STA|=0x4000;
else
{
USART2_RX_BUF[USART_RX_STA&0X3FFF]=res;
USART2_RX_STA++;
if(USART2_RX_STA>(USART_REC_LEN-1))USART2_RX_STA=0;
}
}
}
}
USART2->ICR|=1<<3;
#if SYSTEM_SUPPORT_OS
OSIntExit();
#endif
}
#endif
void uart2_init(u32 pclk1,u32 bound)
{
u32 temp;
temp=(pclk1*1000000+bound/2)/bound;
RCC->AHB4ENR|=1<<0;
RCC->APB1LENR|=1<<17;
GPIO_Set(GPIOA,PIN2|PIN3,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_MID,GPIO_PUPD_PU);
GPIO_AF_Set(GPIOA,2,7); //PA2,AF7
GPIO_AF_Set(GPIOA,3,7); //PA3,AF7
USART2->BRR=temp;
USART2->CR1=0;
USART2->CR1|=0<<28;
USART2->CR1|=0<<12;
USART2->CR1|=0<<15;
USART2->CR1|=1<<3;
#if EN_USART2_RX
USART2->CR1|=1<<2;
USART2->CR1|=1<<5;
MY_NVIC_Init(3,3,USART2_IRQn,2);
#endif
USART2->CR1|=1<<0;
}
|
|