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

STM32标准库开发——PWM驱动代码

PWM驱动初始化代码

在这里插入图片描述
使能定时器二时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

设置定时器时钟源

TIM_InternalClockConfig(TIM2);

配置定时器二的时基单元

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period=100-1; //ARR寄存器的值
TIM_TimeBaseInitStruct.TIM_Prescaler=720-1; //预分频寄存器的值
TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;//高级寄存器才有
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

初始化定时器二的一二三通道引脚,使用复用推挽输出模式

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);

配置定时器输出比较寄存器

TIM_OCInitTypeDef TIM_OCInitStruct;
TIM_OCStructInit(&TIM_OCInitStruct); //对OC结构体进行一个默认的初始化
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//设置为OC模式为PWM1模式
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//设置为高电平有效,即不翻转电平
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//输出使能
TIM_OCInitStruct.TIM_Pulse=10;
TIM_OC1Init(TIM2,&TIM_OCInitStruct);
TIM_OC2Init(TIM2,&TIM_OCInitStruct);
TIM_OC3Init(TIM2,&TIM_OCInitStruct);

使能定时器二

TIM_Cmd(TIM2,ENABLE);

TIM2 引脚重映射功能

//引脚重映射,由于PA15也可以作为TIM2通道0的输出口,所以可以将引脚映射到15号引脚上
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

在这里插入图片描述

相关文章:

  • SpringMVC获取参数与页面跳转
  • C++ vector 数组转换、查找、最大最小值、排序、排行的几种用法
  • C++ 知识列表【图】
  • 【Linux对磁盘进行清理、重建、配置文件系统和挂载,进行系统存储管理调整存储结构】
  • Docker是什么
  • 开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问
  • 【Linux】权限 !
  • 数据库安全-第一章 Mysql 安全基础-【web 环境搭建——LAMP-1】-LAMP LNMP 简介
  • wamp环境的组成
  • Linux_清理docker磁盘占用
  • list列表可编辑状态
  • element的el-autocomplete组件的使用(模糊匹配、自定义模板、远程搜索)
  • axios原理
  • JVM的组成部分(类加载器、运行时数据区、执行引擎、本地库接口)
  • docker ps -a 要求只显示自己想要的信息
  • [译]前端离线指南(上)
  • 【技术性】Search知识
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • gcc介绍及安装
  • go append函数以及写入
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Linux gpio口使用方法
  • Linux Process Manage
  • python3 使用 asyncio 代替线程
  • Spark RDD学习: aggregate函数
  • 缓存与缓冲
  • 聊一聊前端的监控
  • 智能合约开发环境搭建及Hello World合约
  • 主流的CSS水平和垂直居中技术大全
  • - 转 Ext2.0 form使用实例
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #Linux(Source Insight安装及工程建立)
  • $.proxy和$.extend
  • (0)Nginx 功能特性
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (剑指Offer)面试题34:丑数
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (四)Controller接口控制器详解(三)
  • .NET Core 2.1路线图
  • .net web项目 调用webService
  • .NET 解决重复提交问题
  • .NET单元测试
  • .Net各种迷惑命名解释
  • .NET下的多线程编程—1-线程机制概述
  • /*在DataTable中更新、删除数据*/
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ Linux ] Linux信号概述 信号的产生
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [AIGC codze] Kafka 的 rebalance 机制
  • [AX]AX2012 R2 出差申请和支出报告
  • [CentOs7]图形界面