首页 > 编程语言 >arduino自定义库c与c++的区别

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

时间:2022-08-26 01:33:18浏览次数:204  
标签:自定义 PIN arduino c++ OUTPUT GPIO pinMode define

起初是想把手头的红牛开发板的基于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);
}

 

标签:自定义,PIN,arduino,c++,OUTPUT,GPIO,pinMode,define
From: https://www.cnblogs.com/kyo413/p/16626308.html

相关文章

  • C++入门第一课 函数声明与定义
    函数的声明:如:voidLog(constchar*message);1,在C++中,函数原型就是函数的声明。函数声明就是给函数取名并指定函数的参数类型,返回值类型。告诉编译器有这么一个可使用的......
  • zabbix自定义监控
    zabbix深入自定义监控zabbix多条件触发监控内存可用的百分比UserParameter=mem.available,free-m|awk'NR==2{print$NF/$2*100}'目前属于单条件触发器,因为内存低......
  • 混合编程:如何用pybind11调用C++
    摘要:在实际开发过程中,免不了涉及到混合编程,比如,对于python这种脚本语言,性能还是有限的,在一些对性能要求高的情景下面,还是需要使用c/c++来完成。本文分享自华为云社区《混......
  • pybind11使用记录---ubuntu下使用cmake编译c++工程为python库
    前言:因为最近c++下的工程需要在python下调用,所以需要把c++编译成可供python调用的库,记录一下具体做法:编译c++有多种方法,因为我的是cmake构建的工程,所以直接在cmake的......
  • mac上sublime的配置,支持c++11且支持输入
    支持c++11且可从终端输入在sublime下打开tools然后newbuildsystem,在出来的文件中写入如下:{"cmd":["bash","-c","g++'${file}'-std=c++11-stdlib=libc++......
  • 自定义设置Windows右键新建菜单的方法
    win+r,regedit计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Discardable\PostSetup\ShellNewHKEY_CURRENT_USER\Software\Microsoft......
  • C++类型转换
    const_cast一般用于去除const属性,将常量转变为非常量 dynamic_cast一般用于多态转换,有运行时安全检测 static_cast对比dynamic_cast没有运行时安全检测非同一继......
  • 阅读《计算机图形学编程(使用OpenGL和C++)》8 - 纹理贴图
    纹理贴图就是将图片贴到模型上,让模型看起来更真实。纹理贴图非常重要,因此硬件也为它提供了支持,使得它具备了实现实时的照片级真实感的超高性能。纹理单元是专为纹理设计的......
  • PageHelper自定义count
    一、概述PageHelper:com.github.pagehelper.PageHelper 二、问题描述有一个分页需求,总数据有11万多,响应时间为3秒,测试提出了bug,响应时间太长。sql如下:a表有11万多数......
  • C++中map,multimap和unordered_map的区别
    map、multimap容器map的所有元素都是pair,同时拥有键值(key)和实值(value)pair的第一元素被视为键值,第二元素被视为实值性质:以rb_tree为底层结构,因此元素有自动排序的特性,......