| 
 | |
| 
 | 
| 开发:
C++知识库 
Java知识库 
JavaScript 
Python 
PHP知识库 
人工智能 
区块链 
大数据 
移动开发 
嵌入式 
开发工具 
数据结构与算法 
开发测试 
游戏开发 
网络协议 
系统运维 教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 | 
| -> 嵌入式 -> hk32(航顺)标准库使用spi3复用功能的问题 -> 正文阅读 | 
|  | 
| [嵌入式]hk32(航顺)标准库使用spi3复用功能的问题 | 
| 
 前言:今天给大家介绍一下自己在使用航顺32芯片中遇到的一些问题。我用的是航顺的HK32f103VET6的一颗芯片,其中使用其中SPI3外设复用功能时,发现对应官方库的宏定义有些错误。遂给大家分享一下使用修改过程。 顺带给大家介绍一下航顺公司。   作者:良知犹存 转载授权以及围观:欢迎关注微信公众号:羽林君 或者添加作者个人微信:become_me 情节介绍:我们使用MCU过程中会遇到一些IO外设进行复用 (为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上) 到非默认的引脚。 我在使用航顺芯片时候想把PD3、PD4、PD5、PD6使用为SPI引脚。   手册配置查询经过查询对应的数据手册之后:(这是我查看手册对应的版本)   可以看到 PD3、PD4、PD5、PD6可以复用为SPI3功能引脚   一般我们都是看AFIO功能开发手册说明,看对应的IO的复用选项。 ST示例如下:   航顺在开发手册中也有描述,但是没有描述SPI3复用选项   所以紧接着我又去查看航顺开发手册,看里面AFIO的寄存器详细描述: 其中SPI3归属在 航顺新增的AFIO_MAPR2 复用寄存器中:   详细对应的关系可以看到, AFIO_MAPR2 ?是一个32位的寄存器,其中SPI3 在23位进行配置,其中我需要进行把 PD3、PD4、PD5、PD6可以复用为SPI3功能引脚,在此位进行设置,只需要 把此位设置 为 1 。     函数对应我使用的航顺的V1.0.4库函数版本:   使用复用功能 我需要用到 void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState) ?这个函数。 我使用 发现该SPI功能无法实现。 所以我们需要更加深入的查看代码: 在官方提供的hk32f10x_gpio .c 文件中你可以看到函数原型: 其中最重要对MAPR2 对应寄存器配置的是此处代码: GPIO_Remap 参数有个掩码,最高位是1的情况下,配置 MAPR2寄存器,否则就去配置 MAPR寄存器。 而我们需要去操作MAPR2寄存器配置SPI3复用功能。 通过IS_GPIO_REMAP 我们可以看一下 对应的GPIO_Remap参数定义。   这样查看完,发现MAPR2寄存器对应的SPI3宏定义最高位是0,中间填充的数据也是有问题的。 因为我们需要调用GPIO_PinRemapConfig函数配置MAPR2寄存器的情况下,需要最高位是1 而我们可以看到官方提供的hk32f10x_gpio .h文件中GPIO_Remap_SPI3的宏定义最高位不是1 这样我们使用 GPIO_PinRemapConfig(GPIO_Remap_SPI3,ENABLE); 复用配置SPI3就会失败 修改建议:库函数出现问题,那我们就直接配置寄存器吧。   查看对应的SPI3_REMAP对应位,我们可以算出来32位为1对应的16进制值为 0x800000   最终代码如下: 最后代码可以正常的使用。 结语这就是我分享的项目中遇到一个HK官方库使用的问题,希望官方也可以查看一下,如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。 作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。 推荐阅读 本公众号全部原创干货已整理成一个目录,回复[ 资源 ]即可获得。 | 
|  | 
| 嵌入式 最新文章 | 
| 基于高精度单片机开发红外测温仪方案 | 
| 89C51单片机与DAC0832 | 
| 基于51单片机宠物自动投料喂食器控制系统仿 | 
| 《痞子衡嵌入式半月刊》 第 68 期 | 
| 多思计组实验实验七 简单模型机实验 | 
| CSC7720 | 
| 启明智显分享| ESP32学习笔记参考--PWM(脉冲 | 
| STM32初探 | 
| STM32 总结 | 
| 【STM32】CubeMX例程四---定时器中断(附工 | 
|  | 
| 上一篇文章 下一篇文章 查看所有文章 | 
| 
 | 
| 开发:
C++知识库 
Java知识库 
JavaScript 
Python 
PHP知识库 
人工智能 
区块链 
大数据 
移动开发 
嵌入式 
开发工具 
数据结构与算法 
开发测试 
游戏开发 
网络协议 
系统运维 教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 | 
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/31 17:02:59- | 
| 
 | 
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |