新手入门
- 积分
- 15
- 金钱
- 15
- 注册时间
- 2020-4-2
- 在线时间
- 5 小时
|
4金钱
我想把SIM 800C模块的usart3端口更改到usart2端口,对原子哥给的源码做出了如下更改,但是在运行之后直接显示“未检测到模块”想知道问题出在哪里,是程序哪里改的有问题吗?(因为更改的源码,所以文字注释有的有问题,更改的全部为红色部分,没有删除源代码的任何部分,其余部分未做更改,只更改了usart3.c 和 sim800c.c 两个文件中的部分如下所示)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // GPIOB时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //串口3时钟使能
USART_DeInit(USART2);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_Init(USART2, &USART_InitStructure); //初始化串口3
USART_Cmd(USART2, ENABLE); //使能串口
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启中断
//设置中断优先级
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
for(j=0;j<i;j++) //循环发送数据
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //循环发送,直到发送完毕
USART_SendData(USART2,USART3_TX_BUF[j]);
}
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//接收到数据
res =USART_ReceiveData(USART2);
while((USART2->SR&0X40)==0);//等待上一次数据发送完成
USART2->DR=(u32)cmd;
|
|