完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
SPI相关IO都没改?
|
|
|
|
void SPI2_Init(void)
{ RCC->APB2ENR|=1<<3; //PORTB时钟使能 RCC->APB1ENR|=1<<14; //SPI2时钟使能 //这里只针对SPI口初始化 GPIOB->CRH&=0X000FFFFF; GPIOB->CRH|=0XBBB00000; //PB13/14/15复用 GPIOB->ODR|=0X7<<13; //PB13/14/15上拉 SPI2->CR1|=0<<10; //全双工模式 SPI2->CR1|=1<<9; //软件nss管理 SPI2->CR1|=1<<8; SPI2->CR1|=1<<2; //SPI主机 SPI2->CR1|=0<<11; //8bit数据格式 SPI2->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1 SPI2->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1 //对SPI2属于APB1的外设.时钟频率最大为36M. SPI2->CR1|=3<<3; //Fsck=Fpclk1/256 SPI2->CR1|=0<<7; //MSBfirst SPI2->CR1|=1<<6; //SPI设备使能 SPI2_ReadWriteByte(0xff);//启动传输 } //SPI2速度设置函数 //SpeedSet:0~7 //SPI速度=fAPB1/2^(SpeedSet+1) //APB1时钟一般为36Mhz void SPI2_SetSpeed(u8 SpeedSet) { SpeedSet&=0X07; //限制范围 SPI2->CR1&=0XFFC7; SPI2->CR1|=SpeedSet<<3; //设置SPI2速度 SPI2->CR1|=1<<6; //SPI设备使能 } //SPI2 读写一个字节 //TxData:要写入的字节 //返回值:读取到的字节 u8 SPI2_ReadWriteByte(u8 TxData) { u16 retry=0; while((SPI2->SR&1<<1)==0) //等待发送区空 { retry++; if(retry>=0XFFFE)return 0; //超时退出 } SPI2->DR=TxData; //发送一个byte retry=0; while((SPI2->SR&1<<0)==0) //等待接收完一个byte { retry++; if(retry>=0XFFFE)return 0; //超时退出 } return SPI2->DR; //返回收到的数据 } 改了,直接源代码啊,没有动 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2316 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2059 浏览 5 评论
2750 浏览 3 评论
2518 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2457 浏览 4 评论
5641浏览 1评论
522浏览 0评论
524浏览 0评论
300浏览 0评论
128浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 01:42 , Processed in 0.982123 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号