当前位置: 首页 > news >正文

STM32 软件I2C方式读取AS5600磁编码器获取角度例程

STM32 软件I2C方式读取AS5600磁编码器获取角度例程


  • 🔖本例程使用正点原子例程作为工程模板创建。

📘 硬件电路部分

  • 🌿原理图部分:
    在这里插入图片描述

  • 🌿PCB布线和电路
    在这里插入图片描述

📙驱动代码部分

int main(void)
{u16 i = 0;u16 raw_num = 0;u16 JIAODUnum = 0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2delay_init(); //延时函数初始化uart_init(9600);	//串口初始化为9600LED_Init();	//初始化与LED连接的硬件接口IIC_Init();while(1) {delay_ms(10);if(++i > 100) {raw_num = AS5600_ReadTwoByte(_raw_ang_hi, _raw_ang_lo); //读取两个寄存器的值JIAODUnum = (raw_num * 360) / 4096; //对寄存器值进行处理得到角度值printf("AS5600 Angle:%d \r\n", JIAODUnum);LED0 = !LED0; //提示系统正在运行i = 0;}}
}
  • 🌿读取效果:
    在这里插入图片描述

📚测试代码

  • 🔖基于stm32f103标准库实现.
链接:https://pan.baidu.com/s/1jmWxyHLhXFY_c5sJyndkmg?pwd=hk0h 
提取码:hk0h

📒i2c地址扫描

  • 🌿基于HAL STM32F1硬件I2C扫描从设备地址:https://blog.csdn.net/weixin_42880082/article/details/131869827

  • 🌿基于Arduino rp2040 I2C扫描程序代码


#include <Wire.h>void setup()
{// Wire.begin();Serial.begin(115200);while (!Serial);             // Leonardo: wait for serial monitorSerial.println("\nI2C Scanner");Wire.setSDA(8);Wire.setSCL(9);Wire.begin();
}void loop()
{byte error, address;int nDevices;Serial.println("Scanning...");nDevices = 0;for(address = 1; address < 127; address++ ) {// The i2c_scanner uses the return value of// the Write.endTransmisstion to see if// a device did acknowledge to the address.Wire.beginTransmission(address);//从指定的地址开始向I2C从设备进行传输error = Wire.endTransmission();//停止与从机的数据传输/** error返回结果:* 0: 成功
1: 数据量超过传送缓存容纳限制
2: 传送地址时收到 NACK
3: 传送数据时收到 NACK
4: 其它错误*/if (error == 0){Serial.print("I2C device found at address 0x");if (address<16) Serial.print("0");Serial.print(address,HEX);Serial.println("  !");nDevices++;}else if (error==4) {Serial.print("Unknown error at address 0x");if (address<16) Serial.print("0");Serial.println(address,HEX);}    }if (nDevices == 0)Serial.println("No I2C devices found\n");elseSerial.println("done\n");delay(5000);           // wait 5 seconds for next scan
}

在这里插入图片描述

相关文章:

STM32 软件I2C方式读取AS5600磁编码器获取角度例程

STM32 软件I2C方式读取AS5600磁编码器获取角度例程 &#x1f516;本例程使用正点原子例程作为工程模板创建。 &#x1f4d8; 硬件电路部分 &#x1f33f;原理图部分&#xff1a; &#x1f33f;PCB布线和电路 &#x1f4d9;驱动代码部分 int main(void) {u16 i 0;u16 ra…...

[WTL/Win32]_[初级]_[如何设置ListView的列宽不出现水平滚动条]

场景 开发WTL/Win32的程序时&#xff0c;经常会用到表格控件CListViewCtrl。这个控件需要设置列的宽度&#xff0c;当用完100%的宽度来平均分配给列宽时&#xff0c;一加载数据多&#xff0c;就会出现垂直滚动条后&#xff0c;水平滚动条也会同时出现的问题。怎么设置才能让水…...

Mac更换JDK版本

1.确保系统中存在多个Java版本。 在Terminal中执行&#xff1a; /usr/libexec/java_home -V 结果&#xff1a; Matching Java Virtual Machines (2): 11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home 1.8.0_2…...

Day55:WEB攻防-XSS跨站CSP策略HttpOnly属性Filter过滤器标签闭合事件触发

目录 XSS跨站-安全防御-CSP XSS跨站-安全防御-HttpOnly XSS跨站-安全防御-XSSFilter(过滤器的意思) 1、无任何过滤 2、实体化 输入框没有 3、全部实体化 利用标签事件 单引号闭合 4、全部实体化 利用标签事件 双引号闭合 5、事件关键字过滤 利用其他标签调用 双引号闭合…...

root_fs文件系统结构分析和内核加载流程

目录 概述 1 根文件系统下目录介绍 2 文件系统内容分析 2.1 etc/inittab代码分析 2.2 /etc/init.d/rcS 代码分析 2.3 /etc/mdev.conf代码分析 2.3.1 功能概述 2.3.2 /etc/mdev.conf的详细代码 2.4 /etc/init.d/rcS的源代码文件 3 分析内核中加载root_fs的流程 3.1 调…...

macOS系统配置RUST开发环境

打开rust语言官方网,然后点击马上开始: Rust 程序设计语言 配置RUST开发环境: 使用curl下载rust安装脚本: 复制到终端执行: curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh 输入: y 选择默认安装,输入: 1...

Android 15全面解读:性能飙升、隐私守护与智能生活新纪元

1. 更强大的性能 Android 15 带来了一系列性能方面的改进&#xff0c;以确保您的设备在运行应用程序时能够更加流畅。通过对系统进行优化&#xff0c;Android 15 在响应速度和性能方面都有了显著的提升。 这些优化包括&#xff1a; 新一代处理器支持&#xff1a; Android 15 …...

Java项目:80 springboot师生健康信息管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统的角色&#xff1a;管理员、宿管、学生 管理员管理宿管员&#xff0c;管理学生&#xff0c;修改密码&#xff0c;维护个人信息。 宿管员…...

云服务器配置 docker-spark

云服务器配置 docker-spark 1. 安装2. 启动3. 查看4. 验证5. 其他 1. 安装 我的服务器是腾讯云轻量应用服务器&#xff0c;2 核 2 G&#xff0c;已经内置了 docker&#xff0c; 配置大概如下&#xff1a; ubuntuVM-20-5-ubuntu --------------------- OS: Ubuntu 22.04 LTS x…...

Matlab之求直角坐标系下两直线的交点坐标

目的&#xff1a;在直角坐标系下&#xff0c;求两个直线的交点坐标 一、函数的参数说明 输入参数&#xff1a; PointA&#xff1a;直线A上的点坐标&#xff1b; AngleA&#xff1a;直线A的倾斜角&#xff0c;单位度&#xff1b; PointB&#xff1a;直线B上的点坐标&#xf…...

Python3:ModuleNotFoundError: No module named ‘elftools‘

问题背景 问题 ModuleNotFoundError: No module named ‘elftools’ 解决方法 pip3 install pyelftools 成功&#xff01;&#xff01;&#xff01;...

【Vue】创建vue项目 npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED

在安装完vue后&#xff0c;一段时间后发现再次使用出错&#xff1b;感觉可能是使用了代理的原因&#xff0c;但是就算关闭了代理一样不行&#xff1b;最后重启大法解决。 此处记录解决时使用到的命令。 检查版本 node -v cnpm -v vue --version vue -V安装 npm install -g vu…...

5、Cocos Creator 动作系统

目录 1、动作系统 API 2、动作系统 API 3、缓动动作 4、参考 动作系统并不能取代动画系统&#xff0c;动作系统提供的是面向程序员的 API 接口&#xff0c;而动画系统则是提供在编辑器中来设计的。它们服务于不同的使用场景&#xff0c;动作系统比较适合来制作简单的形变和…...

web3 token 如何理解

"Web3 Token"是指建立在Web3技术堆栈上的数字令牌。为了更好地理解这个概念&#xff0c;让我们逐步解释&#xff1a; Web3&#xff1a;指的是下一代互联网&#xff08;Web3.0&#xff09;&#xff0c;它是基于区块链技术的去中心化网络。Web3的核心理念是去中心化、安…...

unity pivot和center的区别

在Unity中&#xff0c;“pivot” 和 “center” 是两个在物体变换和编辑过程中经常提到的概念&#xff0c;它们表示物体的不同位置或者参考点。下面是它们的区别&#xff1a; Pivot&#xff08;中心点&#xff09;&#xff1a; Pivot 是物体的旋转和缩放的参考点。在 Unity 中&…...

Python学习笔记-简单案例实现多进程与多线程

Python 的多进程与多线程是并发编程的两种重要方式&#xff0c;用于提高程序的执行效率。它们各自有不同的特点和适用场景。 多进程&#xff08;Multiprocessing&#xff09; 概念&#xff1a; 多进程是指操作系统中同时运行多个程序实例&#xff0c;每个实例称为一个进程。…...

python常用的语法

Python是一种高级、通用、解释型的编程语言&#xff0c;具有简洁、易于阅读和理解的语法。以下是Python中常用的语法&#xff1a; 变量定义和赋值&#xff1a; variable value输出内容&#xff1a; print("Hello, World!")条件判断&#xff1a; if condition:# 条件…...

【计算机网络】概述

&#x1f4dd;本文介绍 本文为计算机网络的概述&#xff0c;会综合概述一下计算机网络 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1a;943641266(QQ) &#x1f6aa;Github地址&#xff1a;https://github.com/sankexilianhua &…...

【Flink connector】文件系统 SQL 连接器:实时写文件系统以及(kafka到hive)实战举例

文章目录 一. 滚动策略&#xff1a;sink后文件切分(暂不关注)1. 切分分区目录下的文件2. 小文件合并 二. 分区提交1. 分区提交触发器 &#xff08;什么时候创建分区&#xff09;1.1. 逻辑说明1.2. 举例说明 2. 分区时间提取器 (用于partition-time情况下partition commit策略)2…...

RpcContext :提供了在 RPC 调用过程中访问当前调用信息的方法

在 Dubbo 中&#xff0c;RpcContext 是一个上下文对象&#xff0c;它提供了在 RPC 调用过程中访问当前调用信息的方法。RpcContext.getClientAttachment() 方法用于获取客户端设置的附件&#xff08;Attachment&#xff09;信息。这些附件信息通常是在 RPC 调用发起方&#xff…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...