初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2015-2-9
- 在线时间
- 0 小时
|

楼主 |
发表于 2015-4-28 21:10:54
|
显示全部楼层
啊.....原子哥我好像知道为什么会起冲突了,因为SPI和HC-05都用了PA2,PA3来传送数据的关系。PA2PA3在HC-05上是接TXD RXD 的
我尝试了一下如果先初始化SPI在初始化蓝牙,则蓝牙模块一切正常,SPI数据写不进去,如果先初始化蓝牙模块在初始化SPI的话则SPI功能一切正常,但是向蓝牙模块发送数据蓝牙模块收不到,但是我通过SPI写数据时,蓝牙模块缺收到一串无法辨识字符。
应该是对的吧原子哥,但是我看了看和HC05相关的串口2初始化,(>_<)因为是寄存器版本的,不知道怎么换PA2PA3,原子哥指导一下吧...
主要是不太懂这句:
GPIOA->CRL&=0XFFFF00FF;
GPIOA->CRL|=0X00008B00;
这两句为什么能实现,视频教程中初始化GPIO串口的那么一长串操作,好像和寄存器教程中初始化GPIO串口的顺序也不一样。。
我想将这两句里面的PA2PA3换成其他的比如PA12,PA13我该怎么改
最后贴上串口2的初始化代码
void USART2_Init(u32 pclk1,u32 bound)
{
RCC->APB2ENR|=1<<2;
GPIOA->CRL&=0XFFFF00FF;
GPIOA->CRL|=0X00008B00;
RCC->APB1ENR|=1<<17;
RCC->APB1RSTR|=1<<17;
RCC->APB1RSTR&=~(1<<17);
USART2->BRR=(pclk1*1000000)/(bound);
USART2->CR1|=0X200C;
USART2->CR3=1<<7;
UART_DMA_Config(DMA1_Channel7,(u32)&USART2->DR,(u32)USART2_TX_BUF);
#ifdef USART2_RX_EN
USART2->CR1|=1<<8;
USART2->CR1|=1<<5;
MY_NVIC_Init(2,3,USART2_IRQn,2);
TIM4_Init(99,7199);
USART2_RX_STA=0;
TIM4_Set(0);
#endif
}
原子哥辛苦了 |
|