为什么要发个这个帖子呢?
学习BLE4.0有一个月了吧,发这个帖子也是为了记录自己的学习过程
相信大家都是学过其他系列的单片机,CC2541集51内核,肯定少不了51的影子,肯定要知道串口,在学习中,串口调试是必不可少的,它能打印出很多有用的信息出来。CC2541的串口引脚是:
P0.2--------UART_RX
P0.3--------UART_TX
先说基础实验吧,上代码:
- void InitUart(void)
- {
- P0SEL |= BV(2) | BV(3); //配置P0.2和P0.3为外设,非GPIO
- U0CSR |= BV(7); //配置当前为UART,非SPI
- U0GCR |= 11; //根据上述波特率设置表格设置115200波特率
- U0BAUD |= 216; //根据上述波特率设置表格设置115200波特率
- UTX0IF = 0; //位寄存器,直接操作,清除中断标志
- U0CSR |= BV(6); //允许接收数据
- IEN0 |= BV(2); //打开接收中断
- EA=1; //打开总中断
- }
复制代码这些寄存器的配置详细得看用户手册,当中对应的功能说相应的寄存器每个位的作用,在最后将其分享出来,这段代码需要说的就是 U0CSR |= 11;U0BAUD|=216;这两句是确定波特率的,和我们以前学的单片机不一样,至于波特率的计算公式与对应表文档有说,看图:
具体的去算,还真没有去算,我都是照着这个表来的,好了 初始化完成了,那就是发送了一个字节了
- U0DBUF = byte;
- while(UTX0IF == 0);
- UTX0IF = 0;
复制代码那个byte就是要发送的字节,至于你要不要把这几句话封装起来,那是你的事了,然后就是中断函数了
- #pragma vector = URX0_VECTOR
- __interrupt void UART0_ISR(void)
- {
- URX0IF = 0; // 清中断标志 ;
- byte=U0DBUF;
- }
复制代码这个格式是固定的,头文件定的串口接收的向量就是URX0_VECTOR,看到这种写法,让我不禁想到以前在学校里学习MSP430的时候,这种风格应该说是TI的风格吧,如果不理解,先照着来一遍。