px4源码阅读笔记---(1)

px4源码阅读笔记—(1)
从今天开始,把看px4源码遇到的各种语法知识罗列出来以备日后查看 复习 巩固

static bool	arm_nothrottle()
	{
		return ((_armed.prearmed && !_armed.armed) || _armed.in_esc_calibration_mode);
	}

static 修饰函数叫做静态函数,静态函数有两种,根据其出现的地方来分类:
如果这个静态函数出现在类里,那么它是一个静态成员函数;
静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非static)数据成员。
其实很好理解,类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。
如果它不是出现在类中,那么它是一个普通的全局的静态函数。
<1> 其他文件中可以定义相同名字的函数,不会发生冲突。
<2> 静态函数不能被其他文件所用。

enum pwm_limit_state {
	PWM_LIMIT_STATE_OFF = 0,
	PWM_LIMIT_STATE_INIT,
	PWM_LIMIT_STATE_RAMP,
	PWM_LIMIT_STATE_ON
};//枚举,后面没被初始化的默认+1
typedef struct {
	enum pwm_limit_state state;
	uint64_t time_armed;
} pwm_limit_t;//typedef为这个新的结构起了一个名字,叫pwm_limit_t
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6
	case MODE_6PWM:
#endif

#if xxx
代码段1
#else
代码段2
#endif
如果xxx为真则执行代码段1否则执行代码段2

switch (_mode) {
	case MODE_1PWM:
	case MODE_2PWM:
	case MODE_3PWM:
	case MODE_4PWM:
	case MODE_2PWM2CAP:
	case MODE_3PWM1CAP:
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 6
	case MODE_6PWM:
#endif
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 8
	case MODE_8PWM:
#endif
#if defined(BOARD_HAS_PWM) && BOARD_HAS_PWM >= 14
	case MODE_14PWM:
#endif
		ret = pwm_ioctl(filp, cmd, arg);
		break;
//前面所有的case都运行ret = pwm_ioctl(filp, cmd, arg);然后break
	default:
		PX4_DEBUG("not in a PWM mode");
		break;
	}

px4 v1.8.0姿态控制部分源码分析
https://blog.csdn.net/lookije/article/details/82891266

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值