完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在为STM32F4xx设备开发一个软件,该软件是从STM32CubeMX生成的项目开始的。 我正在使用已使用HAL库初始化的SPI外设。这是一个工作的SPI写入功能的示例: void spi_write(uint8_t data) { 如果我想在不使用HAL库的情况下使用SPI发送数据,但是在寄存器上做它的准系统(因为它更快)它不起作用。这是我的实现:
知道为什么第二个实现不起作用? 谢谢! |
|
相关推荐
3个回答
|
|
它以什么方式不起作用?
|
|
|
|
它不发送任何数据。
|
|
|
|
根据SPI的实现,您可能需要正确投射
*(volatile uint8_t *)&SPIx -> DR = data; 然后在发送之后等待两个标志是没有意义的。使用魔术数字是荒谬的。 void spi_write(uint8_t data) { while (!(hspi2.Instance->SR & SPI_SR_TXE))); // check the CMSIS definition for you uC *(volatile uint8_t *)&hspi2.Instance->DR = data; } 只有当你要禁用SPI或手动更改CS引脚的状态时才需要进行最后一次检查,并且必须等到最后一次发送。 另一个错误 - SR寄存器是32位而不是16.如果你想用“裸注册”方式使用HAL进行初始化有什么意义呢? |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
748 浏览 1 评论
986 浏览 1 评论
1945 浏览 1 评论
1674 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
698 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-16 00:13 , Processed in 0.751114 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号