arduino自定义库c与c++的区别


起初是想把手头的红牛开发板的基于stm32标准库的例子都改成用arduino库的     发现arduino库是基于hal库的  不是直接把c文件挪过来就能用的

arduino是c++编译器  如果自定义典型的用类的文件,没什么问题   就像这样  (58条消息) Arduino建立自己的工程 添加头文件 添加源文件_csdn_Flying的博客-CSDN博客_arduino添加头文件路径   。因为主程序中必定会用类生成实例   在cpp中写函数的实现没啥问题

但如果直接把适配c编译器的h文件c文件挪过来    主程序只#include .h   那就不会编译。c文件里的函数  报错找不到函数  undefined refer

正确做法是 在h文件里设置条件编译让用c编译器去处理(或者include 。c文件)

 

就像这样  。h

#ifndef _GPIO_H_
#define _GPIO_H_

#include <Arduino.h>
#ifdef __cplusplus
extern "C" {
#endif

#define LED1_GPIO_PIN PF6
#define LED2_GPIO_PIN PF7
#define LED3_GPIO_PIN PF8
#define LED4_GPIO_PIN PF9
#define LED5_GPIO_PIN PF10

void LED_Init(void);

#ifdef __cplusplus
} /*extern "C"*/
#endif


#endif

。c

/**
 * @file    Gpio.c
 * @author  WB R&D Team - openmcu666/kyo
 * @version V1.0
 * @date    2016.05.04/20220825
 * @brief   GPIO Driver
 */

#include "Gpio.h"

/**
 * @brief  setup pins
 * @param  None
 * @retval None
 */
void LED_Init(void)
{
    pinMode(LED1_GPIO_PIN, OUTPUT);
    pinMode(LED2_GPIO_PIN, OUTPUT);
    pinMode(LED3_GPIO_PIN, OUTPUT);
    pinMode(LED4_GPIO_PIN, OUTPUT);
    pinMode(LED5_GPIO_PIN, OUTPUT);
}

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/282308.html

(0)
上一篇 2022年8月26日
下一篇 2022年8月26日

相关推荐

发表回复

登录后才能评论