基于CH32F203利用TIM1 同时输出4通道固定PWM占空比波形

news2024/11/24 7:31:36

基于CH32F203利用TIM1 同时输出4通道固定PWM占空比波形


  • 📌相关篇《关于CH32F203程序下载方式说明》
  • 📍有关CH32F203资料手册以及SDK资料:https://www.wch.cn/products/CH32F103.html
  • 🌴《树莓派RP2040 100M 24通道逻辑分析仪开源项目》
  • ✨虽然CH32F203和STM32F103重合度很高,但是在程序上有些外设还是不能兼容。外设的使用还是可以参考资料丰富的STM32来开发或学习使用。从对应提供的接口API函数来看,基本都是照搬的。
  • 🔖本案例是基于官方提供SDK资料中的单路PWM输出例程中新增的多通道PWM输出。
    • 🎈原案例:CH32F20xEVT\EVT\EXAM\TIM\PWM_Output
  • 🎞4通道输出PWM波形
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 🎉使用RP2040开源的逻辑分析仪,使用免费上位机软件PulseView参考pwm波形脉宽

在这里插入图片描述

📑多通道配置

  • ✨如果想对每个通道单独进行初始化配置,可以将下面的函数分开来写。
void TIM1_PWMOut_Init(u16 arr, u16 psc, u16 ccp)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};
    TIM_OCInitTypeDef TIM_OCInitStructure = {0};
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure = {0};

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE);
		//4个通道分别对应PA8 PA9 PA10 PA11
    GPIO_InitStructure.GPIO_Pin = (uint16_t)(GPIO_Pin_11 | GPIO_Pin_10 | GPIO_Pin_9| GPIO_Pin_8);
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    TIM_TimeBaseInitStructure.TIM_Period = arr;
    TIM_TimeBaseInitStructure.TIM_Prescaler = psc;
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);

#if (PWM_MODE == PWM_MODE1)
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

#elif (PWM_MODE == PWM_MODE2)
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;

#endif

    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = ccp;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);//通道1
    TIM_OC2Init(TIM1, &TIM_OCInitStructure);//通道2
    TIM_OC3Init(TIM1, &TIM_OCInitStructure);//通道3
    TIM_OC4Init(TIM1, &TIM_OCInitStructure);//通道4

    TIM_CtrlPWMOutputs(TIM1, ENABLE);
    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);
    TIM_ARRPreloadConfig(TIM1, ENABLE);
    TIM_Cmd(TIM1, ENABLE);
}

📝main主函数

  • 🔰由于通道2在PA9引脚上,不能开启串口1,否则该引脚无法输出波形。
int main(void)
{
//    USART_Printf_Init( 115200 );//不能开启串口1,PA9 TIM1 PWM通道2
//    printf( "SystemClk:%d\r\n", SystemCoreClock );
//96000 000/48/100=2KHz
    TIM1_PWMOut_Init(1000, 48 - 1, 500);  //96000 000/4800=--->2KHz
    TIM_SetCompare1(TIM1, 800); //80%占空比
    TIM_SetCompare2(TIM1, 600); //60%占空比
    TIM_SetCompare3(TIM1, 400); //40%占空比
    TIM_SetCompare4(TIM1, 200); //20%占空比

    while(1);
}

📓如果项通过其他定时器实现多通道PWM输出功能,原理一样可以照搬,如果想调节每一路的占空比输出,需要补充对应的函数以及关联变量即可实现。

📚程序源码

链接: https://pan.baidu.com/s/1GHRg98C0MnlJ9uqjBhCQjQ
提取码: 4s9d

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相关系数python实现

皮尔逊相关系数的python实现一、相关系数公式二、python实现法1:直接按公式算法2:调用numpy中的corrcoef方法法3:调用scipy.stats中的pearsonr方法法4:调用pandas.Dataframe中的corr方法一、相关系数公式 R的值在-1和1之间&#…

AJAX | 拦截器、文件上传和下载

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! AJAX Ajax即Asynchronous Javascript And XML(异步JavaScript和XML);Ajax技术网页应用能够快速地将增量更新呈现在用户界面上&…

Docker 镜像原理

Linux文件系统由bootfs和rootfs两部分组成:- bootfs:包含bootloader(引导加载程序)和 kernel(内核)- rootfs: root文件系统,包含的就是典型 Linux 系统中的/dev,/proc&am…

Verilog | 二进制与格雷码

一、格雷码简介 格雷码是一个叫弗兰克格雷的人在 1953 年发明的,最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于这种特点,就可以避免二进…

基于DSP+FPGA+AD9238的冲击波超压测试系统设计与实现

对冲击波关键特征参数进行可靠、精确地评估是进行军事行动规划的前提和依据, 测试结果可以为战斗部设计提供参考,也可以为武器弹体材料的研发制造提供有效依据。 近年来,随着集成电子技术与软件系统取得突破性成果,冲击波测试技术…

北京筑龙:采购供应链平台-构建能源企业数智供应链的必经之路

4月13至14日,“中国国际管道会议(CIPC)暨技术装备与成果展”高峰论坛在北京举行。来自国内外管道领域的院士、知名专家、学者齐聚一堂,共同探讨新时代背景下管道技术领域的发展方向。作为采购供应链数字化产品及服务提供商&#x…

涨点神器:卷积变体DCNV2引入Yolov5/Yolov7,助力涨点

1.DCN V2介绍 DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems 论文:https://arxiv.org/abs/2008.13535 作者通过在DCN的基础上,增加了2个创新点,分别是调制模块和使用多个调制后的DCN模块,从形成了DCN的升级版…

tsx零基础页面开发全流程(vue环境)

tsx零基础页面开发全流程(vue环境)一 注册 tsx 页面二 页面布局绘制三 注册并引入组件三 LogistTrackCard 组件绘制四 LogistTrackCard 组件绘制五 动态数据接驳5.1 tsx | props传递变量与使用变量5.2 tsx | 表达式的灵活使用5.3 tsx | 插槽使用5.4 tsx …

【Linux系统:进程控制】

目录 1 进程创建 1.1 fork函数 1.2 写时拷贝 1.3 fork常规用法 1.4 fork调用失败的原因 2 进程终止 2.1 进程退出场景 2.2 进程常见退出方法 3 进程等待 3.1 进程等待必要性 3.2 进程等待的方法 3.2.1 wait方法 3.2.2 waitpid方法 3.3 获取子进程status 4 进程程序替…

【hello Linux】Linux项目自动化构建工具-make/Makefile

目录 1.make/Makefile的背景 2. 实例代码 2.1 常规代码执行过程: 2.2 使用make工具执行代码程序: 3. makefile文件内容的解释 3.1 生成解决方案 3.2 清理解决方案 4. 多文件的makefile文件书写 5. 缓冲区 Linux🌷 1.make/Makefile的背景 1. …

淘宝/天猫店铺订单数据导出、销售报表、数据分析

最近有厂商提出想把天猫店铺的数据拿到后台ERP管理系统中,并能实现线下打印电子面单功能。接手这个需求按照度娘给的指引,申请天猫开发者帐号,但是。。。大厂把订单传送接口关了,只对厂商自研软件开放,还需要租用聚石塔…

力扣118杨辉三角:代码实现+注释详解+其它思考

文章目录第一部分:题目第二部分:代码第三部分:题解3.1 generate()方法解析3.2 main方法调用第四部分:思考第一部分:题目 🏠 链接:118. 杨辉三角 - 力扣(LeetCode) ⭐ 难…

在Matlab中开发AutoSAR模型的流程(自下而上)

目录 前面 创建模型,环境配置 AutoSAR配置 SWC与Runable Interface Port 前面 前面介绍了AutoSAR软件组件开发的两种方式,其中自下向上的方式,是从模型出发,流程如下。 创建模型,环境配置 1、新建模型&#x…

前端技巧总结---持续更新

易遗漏事件总结 关闭/保存后 重置 一些变量、表单 考虑业务流程 加载数据提示 移动端技巧总结 阿里图库 在原有的基础上加新图标 该代码替换掉原有的 iconfont.css ❗src 请求头要加https,要不然移动端会不显示阿里图标 onBackPress 返回上一级 onBackPr…

【Unity VR开发】结合VRTK4.0:不可移动区域

语录: 生活坏到一定程度就会好起来,因为它无法更坏。努力过后,才知道许多事情坚持坚持,就过来了。 前言: 有时候我们可能并不需要所有的区域都进行移动,而只需要部分区域进行移动,那么我们就要将…

中核武汉 x Tapdata:能源领域老牌央企如何释放数据力量,推进精细化管理

数据孤岛是一直以来的老大难问题,之前也有在寻找相关产品和解决方案,要么太重,要么不容易落地,直到偶然间看到 Tapdata。这是一个小而美的产品,专注实时数据开发领域,其异构数据实时同步能力使我们可以更专…

陶泓达:4.17午间提前布局美盘黄金原油操作建议!

黄金方面: 上周五(4月14日),美市盘中,黄金金价大幅下跌,盘中一度下跌55美元。随着黄金遭遇技术性抛售压力,回吐一周的大部分涨幅,不过,在周末之前,许多分析师表示,市场早…

MySQL索引及SQL优化

先对索引做个大概回顾,然后我们详细探讨SQL优化 索引 索引的分类 主键索引 设定为主键后数据库会自动建立索引,innodb为聚簇索引 单值索引 即一个索引只包含单个列,一个表可以有多个单列索引【建议不要超过3】 唯一索引 索引列的值必须唯一&#xff0…

算法训练第五十九天 | 503.下一个更大元素II 、42. 接雨水

单调栈part02503.下一个更大元素II题目描述思路42. 接雨水题目描述思路暴力解法双指针优化单调栈解法准备工作单调栈处理逻辑503.下一个更大元素II 题目链接:503.下一个更大元素II 参考:https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E…

升级长江存储最新闪存,忆恒创源发布新一代企业级NVMe SSD

2023年4月11日 —— 北京忆恒创源科技股份有限公司(Memblaze)正式发布搭载高品质国产闪存的PBlaze6 6541 系列企业级PCIe 4.0 NVMe SSD。作为 MUFP 平台化开发的最新作品,PBlaze6 6541 采用长江存储最新一代晶栈 Xtacking 3D NAND&#xff0c…