plsql不能初始化 你确认已经安装了32位_一个跟状态位处理有关的应用案例

50f3266f69c329a01f5d977f845d3ed7.png

有STM32用户使用STM32H7xx芯片进行开发,用到SPI外设。通过定时器定时触发SPI的发送,但发现每次发送的数据跟本来设计的不一样。本来他是希望每次发生定时器更新事件,在更新中断里发送一个16位数据,可他发现发送的数据却是32位,通过SPI的时钟信号可以清楚的看到每次发送的32个时钟脉冲。这是怎么回事呢?

经过反复确认,跟SPI有关的配置方面没有发现任何问题。

这里我就基于上述问题,稍加拓展地做些验证分析。我找了块STM32H743的Nucleo板进行些验证测试。使用SPI1,让其工作在双工主模式,MOSI与MISO短接,自发自收。

首先,我用DMA的方式来传输数据。使用TIM3的更新事件触发DMA,通过DMA将内存数据写到SPI1的发送数据寄存器,同时SPI1的接收也开启DMA传输,即通过SPI1的接收事件触发DMA传输,将SPI1收到的数据搬到内存数组。

d2ae8f557a23be6dccdd2602e76783e1.png

使用STM32CubeMx工具进行初始化配置。

1、对TIM3进行基本配置,并使能更新事件的DMA请求。【这里将DMA配置为循环模式以便测试】

0afd6887a0fb4e673bbb1ce0a3b88e8a.png

888ae2e9223c08b7854ba8c6a8449ec8.png

2、对SPI1进行初始化配置。工作在双工主模式,数据宽度选择16位,开启SPI接收事件的DMA传输。

6da2fa2a4ecb48b4c9eac89202e8f9d2.png

29171875d122a86ab28429859764aa4c.png

做些其它有关调试、时钟的配置后,生成初始化代码。

准备需要的数据变量并添加相关用户代码。

4285e1bd0f78ccd63896f25c7fca863f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值