0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教程:只需六步,将Hal库移植到标准库

9GxC_IoTMaker 来源:未知 作者:胡薇 2018-06-12 10:10 次阅读

手头上正好有STM32的开发板和ESP-12E模块,想着控制个WS2812玩玩。到MCU开发的时候下载了生成的代码发现是HAL库的,无奈自己刚刚学习stm32,用的是标准库这里参考了官方的移植MSP340教程并修改出适用于STM32标准库的教程。

步骤1、下载好的代码包是这样的,需要把这两个文件夹直接复制到自己工程的文件夹里面:

步骤2、添加到自己的工程组里面,并添加路径:

步骤3、正题来了,现在开始移植工作,需要修改的文件分别如下:3.1、打开gizwits_product.h需要修改的地方如下,查看代码行数可以快速找到)

3.2、打开gizwits_product.c,需要修改的地方如下:

下面删除的几个初始化函数很重要...必须自己写好,要能正常使用

接下来是串口发送函数,我用的是DMA+中断发送接收的,修改成能发送数据的函数..建议先把串口功能调试好在填入调用

int32_t uartWrite(uint8_t *buf, uint32_t len)

{

uint32_t i = 0;

if(NULL == buf)

{

return -1;

}

for(i=0; i

{

//这里填入串口发送函数

TxBuff_esp8266[i]=*buf++;

/* if(i >=2 && buf[i] == 0xFF)

{

//这里填入串口发送函数,发送0x55,意思是遇到0xFF后面要加0x55

//这地方折腾了很久才成功,官方的大神说要加上,但是我删除了也可以用,求解释

//官方说是要求加上的..我直接删除了也能用,你们要是这里加了不行的话也删掉试试

}*/

修改好了记得保存。

步骤4、接下来打开main.c文件添加自己的初始化代码,并且调用gizwits的相关函数记得把这两个头文件包含进去

#include "gizwits_product.h"

#include "common.h"

我的初始化函数是自己封装的,比较简陋,反正功能能实现就行了步骤5、修改中断函数

接下来就是编译了,要是有错误的地方看一下是不是外部函数调用的时候没有包含进函数所在的头文件。步骤6、打开gizwits_product.c,找到gizwitsEventProcess的函数,下面那里有你添加的数据点,可以添加自己想要的功能。

举个栗子我的是控制WS2812,直接在里面调用WS2812的亮灯函数,把读到的数据颜色数据填入就可以了

移植的步骤大概就是这么多,试了一下烧录了进去确实可以用app控制。还有很多功能没有调试,剩下的功能要去参考其他大神的了。静静的做一名的伸手党。

要是有什么错误的地方请指正,我也是这两天刚刚琢磨出来,希望能互相学习。诶,那个,第一次写教程,stm32也刚接触没多久,水平有限,有什么写得不好或者错了的地方请告之改正。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16009

    浏览量

    343527
  • STM32
    +关注

    关注

    2239

    文章

    10669

    浏览量

    348709

原文标题:官方生成的MCU代码(hal库)移植到标准库的STM32教程

文章出处:【微信号:IoTMaker,微信公众号:机智云开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IAP升级,boot和app分别是用标准HAL写的,跳转不成功是怎么回事?

    在学IAP升级。 我写的app程序是用HAL写的,设置了IROM的起始地址及大小,在程序开始后也设置了中断向量表偏移地址。 用我同事写好的boot程序(标准写的,可以跳转到
    发表于 04-24 07:56

    如果是使用六步方波的方法来控制电机,要如何实现过电流保护?

    请问一下如果是使用六步方波的方法来控制电机,要如何实现过电流保护? 以免电流过大造成板子损坏
    发表于 04-22 08:10

    请问workbench生成代码时怎么选择foc或梯形六步法?

    workbench生成代码时怎么选择foc或梯形六步法?
    发表于 04-19 07:53

    STM32标准程序与HAL程序如何合并的?

    请问大家STM32标准款与HAL程序有没有合并的教程,或是合并的方法?
    发表于 04-03 08:02

    IHM08M1板bldc无刷电机六步方波马达电压可以48V吗?

    IHM08M1板bldc无刷电机六步方波马达电压可以48V吗?我看反电动势分压为3V3,这个是不是有问题
    发表于 03-28 08:05

    请问HAL和LL分别在什么场合使用?

    请问HAL和LL分别在什么场合使用?LL简单明了,为啥不是主流使用啊?还有为啥L03的例程中有较多的LL例子,而其他L0芯片几乎没有,轻问官方是否不太支持LL
    发表于 03-25 08:08

    STM32F429的工程标准移植HAL后中断向量表异常的原因?

    STM32F429的工程标准移植HAL后中断向量表异常
    发表于 03-20 06:02

    请问标准外设HAL的区别是什么?

    标准外设HAL的区别是什么?
    发表于 10-23 08:01

    FAQ0097 AT32F421 BLDC电机六步驱动方式设置说明

    AT32F421_BLDC电机六步驱动方式设置说明
    发表于 10-23 06:49

    STM32F1的HAL中IIC还有bug吗?

    这个HAL是否已经把标准的IIC问题解决
    发表于 10-13 08:24

    ST的LL的函数接口是和HAL兼容的吗?

    ST 的LL的函数接口是和HAL兼容的吗
    发表于 10-11 06:45

    ST的LLHAL可以混合使用吗?

    ST的LLHAL可以混合使用吗
    发表于 10-09 07:59

    STM32F1_HAL使用手册

    入了解如何使用MCU。这种结构提高了代码的可重用性,并保证了在其他平台上的易移植性设备。 HAL驱动程序包括一整套现成的API,这些API简化了用户应用程序实施例如,通信外围设备包含用于初始化和配置的API 外围设备,根据轮询
    发表于 09-28 06:21

    移植arduino上的一个红外遥控k210上,工具链是否有c++的基本

    请问工具链现在支持用c++开发吗?我想移植arduino上的一个红外遥控k210上, 现在在考虑移植的可行性
    发表于 09-15 07:06

    如何MODBUS RTU从AVR移植ESP8266?

    嗨, 我正在尝试将此移植 ESP8266 12 https://github.com/smarmengol/Modbus-Ma ... or-Arduino我在移植 uart 函数
    发表于 05-23 07:17