开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
forked from OneOS/OneOS
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (7)
标签 (4)
master
OneOS-V2.3.0
OneOS-V2.2.0
OneOS-V2.1.0
OneOS-V2.0.0-Beta
OneOS-V2.0.1
OneOS-V1.2.0-LTS
OneOS-v2.3.0
OneOS-v2.2.0
OneOS-V1.2.0
OneOS-V1.1.0
master
分支 (7)
标签 (4)
master
OneOS-V2.3.0
OneOS-V2.2.0
OneOS-V2.1.0
OneOS-V2.0.0-Beta
OneOS-V2.0.1
OneOS-V1.2.0-LTS
OneOS-v2.3.0
OneOS-v2.2.0
OneOS-V1.2.0
OneOS-V1.1.0
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (7)
标签 (4)
master
OneOS-V2.3.0
OneOS-V2.2.0
OneOS-V2.1.0
OneOS-V2.0.0-Beta
OneOS-V2.0.1
OneOS-V1.2.0-LTS
OneOS-v2.3.0
OneOS-v2.2.0
OneOS-V1.2.0
OneOS-V1.1.0
OneOS
/
drivers
/
misc
/
pulse_encoder.c
OneOS
/
drivers
/
misc
/
pulse_encoder.c
pulse_encoder.c 4.84 KB
一键复制 编辑 原始数据 按行查看 历史
CMCC-OneOS 提交于 2022年04月27日 09:05 +08:00 . update master
/**
***********************************************************************************************************************
* Copyright (c) 2020, China Mobile Communications Group Co.,Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* @file pulse_encoder.c
*
* @brief this file implements pulse_encoder related functions
*
* @details
*
* @revision
* Date Author Notes
* 2020年02月20日 OneOS Team First Version
***********************************************************************************************************************
*/
#include <device.h>
#include "misc/pulse_encoder.h"
os_err_t os_pulse_encoder_enable(struct os_pulse_encoder_device *pulse_encoder)
{
os_err_t result = OS_EOK;
OS_ASSERT(pulse_encoder != OS_NULL);
result = pulse_encoder->ops->enabled(pulse_encoder, OS_TRUE);
return result;
}
os_err_t os_pulse_encoder_disable(struct os_pulse_encoder_device *pulse_encoder)
{
os_err_t result = OS_EOK;
OS_ASSERT(pulse_encoder != OS_NULL);
result = pulse_encoder->ops->enabled(pulse_encoder, OS_FALSE);
return result;
}
os_err_t os_pulse_encoder_read(struct os_pulse_encoder_device *pulse_encoder, os_int32_t *buffer)
{
os_err_t result = OS_EOK;
os_int16_t cur_encoder_count = 0;
result = pulse_encoder->ops->get_count(pulse_encoder, &cur_encoder_count);
if (pulse_encoder->over_under_flowcount < 0)
{
*buffer = cur_encoder_count + (pulse_encoder->over_under_flowcount + 1) * pulse_encoder->period;
}
else
{
*buffer = cur_encoder_count + pulse_encoder->over_under_flowcount * pulse_encoder->period;
}
return result;
}
os_err_t os_pulse_encoder_clear(struct os_pulse_encoder_device *pulse_encoder)
{
return pulse_encoder->ops->control(pulse_encoder, PULSE_ENCODER_CMD_CLEAR_COUNT, OS_NULL);
}
os_err_t os_pulse_encoder_set_period(struct os_pulse_encoder_device *pulse_encoder, os_uint32_t period)
{
return pulse_encoder->ops->control(pulse_encoder, PULSE_ENCODER_CMD_SET_PERIOD, &period);
}
static os_ssize_t _pulse_encoder_read(struct os_device *dev, os_off_t pos, void *buffer, os_size_t size)
{
return os_pulse_encoder_read((struct os_pulse_encoder_device *)dev, (os_int32_t *)buffer);
}
static os_err_t _pulse_encoder_control(struct os_device *dev, int cmd, void *args)
{
os_err_t result = OS_EOK;
struct os_pulse_encoder_device *pulse_encoder = (struct os_pulse_encoder_device *)dev;
switch (cmd)
{
case PULSE_ENCODER_CMD_CLEAR_COUNT:
result = pulse_encoder->ops->control(pulse_encoder, PULSE_ENCODER_CMD_CLEAR_COUNT, OS_NULL);
break;
case PULSE_ENCODER_CMD_SET_PERIOD:
result = pulse_encoder->ops->control(pulse_encoder, PULSE_ENCODER_CMD_SET_PERIOD, (os_uint32_t *)args);
break;
case PULSE_ENCODER_CMD_ENABLE:
result = pulse_encoder->ops->enabled(pulse_encoder, OS_TRUE);
break;
case PULSE_ENCODER_CMD_DISABLE:
result = pulse_encoder->ops->enabled(pulse_encoder, OS_FALSE);
break;
default:
result = OS_ENOSYS;
break;
}
return result;
}
/* clang-format off */
const static struct os_device_ops pulse_encoder_ops = {
.read = _pulse_encoder_read,
.control = _pulse_encoder_control
};
/* clang-format on */
/**
***********************************************************************************************************************
* @brief register pulse_encoder device
*
* @param[in] pulse_encoder pointer of pulse_encoder device
* @param[in] name pointer of pulse_encoder name
* @param[in] user_data not used
*
* @return os_err_t
* @retval OS_EOK run successfully
* @retval OS_EINVAL pointer of device or name is NULL or device not exist
***********************************************************************************************************************
*/
os_err_t os_device_pulse_encoder_register(struct os_pulse_encoder_device *pulse_encoder, const char *name)
{
struct os_device *device;
OS_ASSERT(pulse_encoder != OS_NULL);
OS_ASSERT(pulse_encoder->ops != OS_NULL);
device = &(pulse_encoder->parent);
device->type = OS_DEVICE_TYPE_MISCELLANEOUS;
device->ops = &pulse_encoder_ops;
pulse_encoder->over_under_flowcount = 0;
return os_device_register(device, name);
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。 官网地址:https://os.iot.10086.cn/
暂无标签
Apache-2.0
使用 Apache-2.0 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/MicroOS/OneOS.git
git@gitee.com:MicroOS/OneOS.git
MicroOS
OneOS
OneOS
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /