定时器-输出比较PWM

news/2024/10/19 0:23:30

image

打开时钟-->配置 时钟源-->配置 时基单元-->配置 输出比较单元-->配置 GPIO口

代码

void PWM_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);/*配置 时钟*/TIM_InternalClockConfig(TIM2);TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//CK_CNT_OV=CK_PSC/(PSC+1)/(ARR+1)TIM_TimeBaseInitStruct.TIM_Prescaler=720-1;//PSCTIM_TimeBaseInitStruct.TIM_Period=100-1;//ARRTIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);//为更新预分频器和重复计数器的值,该函数会直接进入一次中断TIM_ClearFlag(TIM2,TIM_FLAG_Update);//清楚标志位/*配置 输出比较单元*/TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);//先初始化,再配置TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//极性TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//使能TIM_OCInitStructure.TIM_Pulse=0;//CCR的值TIM_OC1Init(TIM2,&TIM_OCInitStructure);/*配置 GPIO*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//使用推挽输出,接入外设GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);TIM_Cmd(TIM2,ENABLE);//启动定时器,定时器开始计数。
}

要点/问题

结构体TIM_OCInitTypeDef的初始化

结构体TIM_OCInitTypeDef的成员过多,为了避免某些错误,应先对其初始化再对某些成员进行修改。

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCStructInit(&TIM_OCInitStructure);//先初始化,再配置
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//极性
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//使能
TIM_OCInitStructure.TIM_Pulse=0;//CCR的值

GPIO口的配置

设置推挽输出模式,使IO口连接到片上外设

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//使用推挽输出,接入外设

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

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

相关文章

专题二:操作系统基本原理

1. 操作系统概述 操作系统:管理系统的硬件、软件、数据资源 控制程序运行 人机之间的接口 应用软件与硬件之间的接口进程管理 存储管理 文件管理 作业管理 设备管理 2. 进程管理 2.1. 进程状态(三态模型、五态模型) 2.2. ★★★信号量与PV操作★★★ 2.2.1. 前趋图 2.2.2.…

乘风破浪,扬帆出海,专门为英语学习者设计的在线学习平台之English Pod

什么是English Podhttps://learnenglishpod.comEnglish Pod是一个专门为英语学习者设计的在线学习平台,提供各种各样的英语学习播客(pod cast)和教学资源。其目标是帮助不同水平的学习者通过日常对话和实用内容提高英语听力、口语、词汇和语法能力。EnglishPod的课程通常包括对…

C++内存模型实践探索

C++对象模型是个常见、且复杂的话题,本文基于Itanium C++ ABI通过程序实践介绍了几种 简单C++继承 场景下对象模型,尤其是存在虚函数的场景,并通过图的方式直观表达内存布局。前言 C++对象模型是个常见、且复杂的话题,本文基于Itanium C++ ABI通过程序实践介绍了几种 简单C…

课堂练习

Complex.h中的代码:#include <iostream> #pragma once class Complex { public:Complex(double x=0, double y=0);Complex(const Complex& p);~Complex();void add(const Complex& p);double get_real() const;double get_imag() const;friend Complex add(cons…

乘风破浪,乘风出海,学习英语之English Pod

什么是English Podhttps://learnenglishpod.comEnglish Pod是一个专门为英语学习者设计的在线学习平台,提供各种各样的英语学习播客(podcast)和教学资源。其目标是帮助不同水平的学习者通过日常对话和实用内容提高英语听力、口语、词汇和语法能力。EnglishPod的课程通常包括对…

20222306 2024-2025-1 《网络与系统攻防技术》实验二实验报告

1.实验内容 1.1 实践目标 (1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定) PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 (2)使用socat获取主机操作Shell, 任务计划启动 (3)使用MSF meterpreter(或其他软件)生成可执行文件,利…

transformers 推理 Qwen2.5 等大模型技术细节详解(一)transformers 初始化和对象加载(文末免费送书)

本文详细讲解 transformers 推理大语言模型的初始化过程,包括 Python 包搜索、LazyModule 延迟模块、模块搜索和 Python 包 API 设计美学……上周收到一位网友的私信,希望老牛同学写一篇有关使用 transformers 框架推理大模型的技术细节的文章。 老牛同学刚开始以为这类的文章…

UI开发概述

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs…