STM32
直播中

张涛

7年用户 1353经验值
私信 关注
[问答]

请问寄存器版本的程序如何改成HAL库的?

偶然得到一块电路板见图,上面的主芯片是STM32F103VE,有个三位数码管,是由集成电路BC7275控制的,BC7275是凌志比高科技生产的单片5位数码管驱动芯片http://www.bitcode.com.cn/bc7275.html   这个是网址,在这个网址,我下了一个例程 和技术手册 ,这个例程是用寄存器写的,是配合他们的测试板子的,和我手上的电路板不同,我的是SPI2口,PB12- SPI2的NSS脚直接接地,PB14未接,这个应当是Half-Duplex-Master模式,CS接地的两线接法。具体参数是:SPI2配置为16位,pclk/256速率, 主机模式,clk空闲高电平,数据在第二个时钟沿采样, 最终SPI2时钟频率为35.156KHz。  我也按照这个参数进行了设置,用CUBE生成了程序,但是  不能点亮数码管,程序死在这段while ((SPI1->SR   SPI_SR_RXNE) == 0);                 // 等待发送完成 waitfor transmit to finish。

用万用表测试数码管是好的,我的HAL库生成的程序在这。那位大神能看下是神马问题。LED1-4  分别为PE0-PE3,按键KEY1-4  分别为PD0-PD3。

回帖(1)

听我讲

2024-5-7 17:40:59
要将寄存器版本的程序改成HAL库的,你需要遵循以下步骤:

1. 首先,确保你已经安装了STM32CubeMX和相应的HAL库。STM32CubeMX是一个图形化软件配置工具,可以帮助你生成初始化代码和配置HAL库。

2. 使用STM32CubeMX配置你的项目。在CubeMX中,选择你的STM32F103VE芯片,然后配置SPI2接口。根据你提供的参数,设置SPI2为16位,时钟速率为PCLK/256,主机模式,空闲时钟高电平,数据在第二个时钟沿。

3. 在CubeMX中,配置GPIO引脚。确保PB12被配置为SPI2的NSS引脚,PB14可以保持未连接。

4. 生成HAL库初始化代码。在CubeMX中,点击“Generate Code”按钮,生成初始化代码和配置文件。

5. 将寄存器版本的程序中的SPI通信代码替换为HAL库函数。例如,使用HAL_SPI_Transmit()和HAL_SPI_Receive()函数代替直接操作SPI寄存器的代码。

6. 修改BC7275驱动代码以适应HAL库。根据你下载的例程和技术手册,将BC7275的寄存器操作替换为HAL库函数。例如,使用HAL_SPI_Transmit()和HAL_SPI_Receive()函数与BC7275通信。

7. 确保你的项目中的时钟配置正确。在HAL库中,时钟配置是通过RCC(Reset and Clock Control)模块进行的。确保你的项目中的时钟配置与CubeMX中的配置一致。

8. 编译并下载到你的STM32F103VE开发板上。使用STM32CubeIDE或其他支持STM32的IDE编译你的项目,并下载到开发板上进行测试。

9. 如果一切正常,你的程序现在应该使用HAL库而不是直接操作寄存器来与SPI2和BC7275通信。

通过以上步骤,你应该能够将寄存器版本的程序转换为使用HAL库的程序。这将使代码更易于阅读和维护,同时减少直接操作硬件寄存器带来的风险。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分