起初是想把手头的红牛开发板的基于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/tech/pnotes/282308.html