V103开发笔记1-20250113

2025-01-13

一、应用方向分析

应用项目: PCBFLY无人机项目(包括飞控和手持遥控器);

分析移植项目,应用外设资源包括: GPIO, PWM,USART,GPIO模拟I2C/SPI, ADC,DMA,USB等;

二、移植项目的基本套路:

1. 熟悉目标机的硬件驱动或者HAL库;对应项目用到的走一遍,

比如GPIO,EXTI,ADC,PWM,DMA,USART,I2C,SPI,USB等;

2. 参考F103版本,逐个实现功能模块;

在HAL层完成驱动开发;

3. 熟悉原有系统的应用架构和流程,建立应用层的逻辑框架;

根据需要,用应用层逻辑进行拼装,调用底层硬件驱动的时候,逐个确认;

三、具体例程上手

0.GPIO例程开始

我自己用到的开发板PB0/1为LED控制引脚(跟最后项目不一样)

可能遇到的问题: 编译的路径MRS在哪儿设置不熟悉 ,项目打开编译会找不到文件。

把SRC文件夹拷出来,然后指定路径,并在设置中把路径包含进来;
在这里插入图片描述

熟悉原有例程的时候,需要重新定义公共文件的路径:
在这里插入图片描述

通常熟悉一个新的芯片平台准备工作,涉及到多个文档,大致浏览一下,知道什么方面的信息可以在哪个文档查阅到就可以,不用逐页细看。

DS–datasheet

RM–reference manual

SR–software reference manual

UM–user manual

1. PWM驱动移植

先熟悉目标机的PWM工作机制,看手册;

在这里插入图片描述
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关注几个点:

重装模式:增计数,减计数,增减计数;

分频器:分频器的分频倍数;

通道数:一般是4通道(F103和V103一样)

高级技能:DMA,级联,同步…

内部结构三要素:时钟源, 分频器,输入捕获(VF采样,频率测量)/输出比较(PWM输出);

重点关注PWM输出:

在这里插入图片描述

关键参数: 重装值确定频率,计数值确定占空比;

模式:1–边沿对齐, 2–中心对齐;

看代码,观察波形:

1)初始化通道,使能时钟;

2)初始化定时器的重装值和计数值,从而确定频率和占空比;

3)使能定时器,启动PWM输出;

参数: arr–重装值, psc–分频器, ccp–捕获比较寄存器;

arr和ccp都是16位,支持到1/65535的分辨率

psc*arr=周期

psc*ccp=高电平时间;

TIM1_PWMOut_Init(100, 36000 - 1, 50);

分频后时钟:72M/36000=2KHz, 周期0.5ms

arr算出来的周期是0.5ms*100=50ms

ccp算出来的占空比是50/100=50%;
在这里插入图片描述

注意还是有少许误差;

改变arr值,可以改变频率,改变ccp值可以改变占空比;

TIM1_PWMOut_Init(200, 36000 - 1, 50);

在这里插入图片描述

周期100ms,75%的占空比

TIM1_PWMOut_Init(200, 36000 - 1, 150);
在这里插入图片描述

周期100ms,25%的占空比

以上都是模式2

模式1对比: 加模式,与上面相反

在这里插入图片描述

2. 定时器中断例程

配置定时器、设置中断;

编写中断服务程序;

!!!RISCV的中断处理特殊之处
void TIM3_IRQHandler(void) attribute((interrupt(“WCH-Interrupt-fast”)));
// 不加这一句,会只中断进入一次,这个是riscv的特性,要注意

后续…

2.外部中断
3.时钟中断
4. I2C/SPI外设驱动
5. ADC驱动
6. 串口驱动(串口2/串口3)

  1. DMA驱动
    9.FREERTOS移植
    任务;
    消息;
    邮箱;
    队列;
    信号量;
    互斥量;
    定时器;
    内存管理;
    事件组;
    软件定时器;
    轮询;

10.USB驱动
11.FREERTOS和中断的数据交换;

ADC驱动
6. 串口驱动(串口2/串口3)

  1. DMA驱动
    9.FREERTOS移植
    任务;
    消息;
    邮箱;
    队列;
    信号量;
    互斥量;
    定时器;
    内存管理;
    事件组;
    软件定时器;
    轮询;

10.USB驱动
11.FREERTOS和中断的数据交换;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/962043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%

“AAPM: Large Language Model Agent-based Asset Pricing Models” 论文地址:https://arxiv.org/pdf/2409.17266v1 Github地址:https://github.com/chengjunyan1/AAPM 摘要 这篇文章介绍了一种利用LLM代理的资产定价模型(AAPM)…

新版231普通阿里滑块 自动化和逆向实现 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 补环境逆向 部分补环境 …

Autosar-Os是怎么运行的?(时间保护)

写在前面: 入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!! 1.功能概述 AUTOSAR OS 的四大可定制类型凸显了时间保护(Timing Protection)…

vue框架技术相关概述以及前端框架整合

vue框架技术概述及前端框架整合 1 node.js 介绍:什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。 作用 1 运行java需要安装JDK,而Node.js是JavaScript的运行环…

玩转大语言模型——使用langchain和Ollama本地部署大语言模型

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…

亚博microros小车-原生ubuntu支持系列:15 激光雷达巡逻

一 TF坐标转换 ros2 -5.1 坐标变化工具介绍_ros怎么发布坐标变化-CSDN博客 ros2笔记-5.3 C中地图坐标系变换_c变换坐标系-CSDN博客 header:stamp:sec: 1737893911nanosec: 912000000frame_id: odom_frame child_frame_id: base_footprint pose:pose:position:x: 0.053831271…

C++并发编程指南06

文章目录 4.4 简化代码与同步工具同步工具作为构建块 4.4.1 使用Future的函数化编程函数化编程简介C支持函数化编程 快速排序 - FP模式快速排序串行版快速排序并行版 spawn_task函数结论快速排序 - 串行版快速排序 - 并行版spawn_task函数使用 spawn_task 实现并行快速排序详细…

ios swift画中画技术尝试

继上篇:iOS swift 后台运行应用尝试失败-CSDN博客 为什么想到画中画,起初是看到后台模式里有一个picture in picture,去了解了后发现这个就是小窗口视频播放,方便用户执行多任务。看小窗口视频的同时,可以作其他的事情…

C++,STL 六大组件:容器、迭代器、算法、函数对象、适配器、分配器

文章目录 引言一、容器(Containers)主要分类 二、迭代器(Iterators)三、算法(Algorithms)四、函数对象(Functors)五、适配器(Adapters)六、分配器&#xff08…

STM32项目分享:智能鱼缸

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、包含内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: STM32智能鱼缸/水族箱 (资料分享见文末…

基于MinIO的对象存储增删改查

MinIO是一个高性能的分布式对象存储服务。Python的minio库可操作MinIO,包括创建/列出存储桶、上传/下载/删除文件及列出文件。 查看帮助信息 minio.exe --help minio.exe server --help …

14-6-1C++STL的list

(一)list容器的基本概念 list容器简介: 1.list是一个双向链表容器,可高效地进行插入删除元素 2.list不可以随机存取元素,所以不支持at.(pos)函数与[ ]操作符 (二)list容器头部和尾部的操作 list对象的默…

汽车网络信息安全-ISO/SAE 21434解析(中)

目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…

C#分页思路:双列表数据组合返回设计思路

一、应用场景 需要分页查询(并非全表查载入物理内存再筛选),返回列表1和列表2叠加的数据时 二、实现方式 列表1必查,列表2根据列表1的查询结果决定列表2的分页查询参数 三、示意图及其实现代码 1.示意图 黄色代表list1的数据&a…

YOLOv8源码修改(4)- 实现YOLOv8模型剪枝(任意YOLO模型的简单剪枝)

目录 前言 1. 需修改的源码文件 1.1添加C2f_v2模块 1.2 修改模型读取方式 1.3 增加 L1 正则约束化训练 1.4 在tensorboard上增加BN层权重和偏置参数分布的可视化 1.5 增加剪枝处理文件 2. 工程目录结构 3. 源码文件修改 3.1 添加C2f_v2模块和模型读取 3.2 添加L1正则…

【Block总结】DynamicFilter,动态滤波器降低计算复杂度,替换传统的MHSA|即插即用

论文信息 标题: FFT-based Dynamic Token Mixer for Vision 论文链接: https://arxiv.org/pdf/2303.03932 关键词: 深度学习、计算机视觉、对象检测、分割 GitHub链接: https://github.com/okojoalg/dfformer 创新点 本论文提出了一种新的标记混合器(token mix…

设计模式Python版 原型模式

文章目录 前言一、原型模式二、原型模式示例三、原型管理器 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对…

一文讲解Java中的BIO、NIO、AIO之间的区别

BIO、NIO、AIO是Java中常见的三种IO模型 BIO:采用阻塞式I/O模型,线程在执行I/O操作时被阻塞,无法处理其他任务,适用于连接数比较少的场景;NIO:采用非阻塞 I/O 模型,线程在等待 I/O 时可执行其…

使用 postman 测试思源笔记接口

思源笔记 API 权鉴 官方文档-中文:https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md 权鉴相关介绍截图: 对应的xxx,在软件中查看 如上图:在每次发送 API 请求时,需要在 Header 中添加 以下键值对&a…

AWTK 骨骼动画控件发布

Spine 是一款广泛使用的 2D 骨骼动画工具,专为游戏开发和动态图形设计设计。它通过基于骨骼的动画系统,帮助开发者创建流畅、高效的角色动画。本项目是基于 Spine 实现的 AWTK 骨骼动画控件。 代码:https://gitee.com/zlgopen/awtk-widget-s…