static void TIM4_Init(void)     //普通定时函数
{
TIM4->ARR=1000-1; //设定计数器自动重装值
TIM4->PSC=168-1; //2000000 //预分频器 TIM4->CCMR1|=6<<4; //CH1 PWM1模式
TIM4->CCMR1|=6<<12; //CH2 PWM1模式
TIM4->CCMR2|=6<<4; //CH3 PWM1模式
TIM4->CCMR2|=6<<12; //CH4 PWM1模式 TIM4->CCER|=1<<0; //OC1 输出使能
TIM4->CCER|=1<<4; //OC2 输出使能
TIM4->CCER|=1<<8; //OC3 输出使能
TIM4->CCER|=1<<12; //OC4 输出使能 TIM4->CR1|=1<<7; //ARPE使能
TIM4->CR1|=1<<0; //使能定时器4
}
static void TIM8_Init(void) //普通定时函数
{
TIM8->ARR= 1023; //2000000 //设定计数器自动重装值
TIM8->PSC= (SystemCoreClock/880000)-1; //预分频器 TIM8->CCMR1|=7<<4; //CH1 PWM2模式
TIM8->CCMR1|=7<<12; //CH2 PWM2模式
TIM8->CCMR2|=7<<4; //CH3 PWM2模式
TIM8->CCMR2|=7<<12; //CH4 PWM2模式 TIM8->CCER|=1<<0; //OC1 输出使能
TIM8->CCER|=1<<4; //OC2 输出使能
TIM8->CCER|=1<<8; //OC3 输出使能
TIM8->CCER|=1<<12; //OC4 输出使能 TIM8->CR1|=1<<7; //ARPE使能
TIM8->CR1|=1<<0; //使能定时器8 TIM8->BDTR|=1<<15; //TIM1和TIM8高级定时器需配置
} RCC->APB1ENR|=1<<0; //TIM2时钟使能
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB1ENR|=1<<2; //TIM4时钟使能
RCC->APB1ENR|=1<<3; //TIM5时钟使能
RCC->APB1ENR|=1<<5; //TIM7时钟使能
RCC->APB1ENR|=1<<6; //TIM12时钟使能 RCC->APB2ENR|=1<<0; //TIM1时钟使能
RCC->APB2ENR|=1<<1; //TIM8时钟使能
RCC->APB2ENR|=1<<16; //TIM9时钟使能 //主电机PWM输出 ************
GPIO_AF_Set(GPIOD,12,2); //PD12,AF2 定时器4
GPIO_AF_Set(GPIOD,13,2); //PD13,AF2
GPIO_AF_Set(GPIOD,14,2); //PD14,AF2
GPIO_AF_Set(GPIOD,15,2); //PD15,AF2
GPIO_Set(GPIOD,PIN12|PIN13|PIN14|PIN15,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_NONE);//复用功能 GPIO_AF_Set(GPIOC,6,3); //PC6,AF3 定时器8
GPIO_AF_Set(GPIOC,7,3); //PD7,AF3
GPIO_AF_Set(GPIOC,8,3); //PD8,AF3
GPIO_AF_Set(GPIOC,9,3); //PD9,AF3
GPIO_Set(GPIOC,PIN6|PIN7|PIN8|PIN9,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_NONE);//复用功能
 
TIM4->CCR1 = 0;

STM32F4寄存器初始化:PWM输出的更多相关文章

  1. 关于普通定时器与高级定时器的 PWM输出的初始化的区别

    不管是普通定时器还是高级定时器,你用哪个通道,就在程序里用OC多少.比如CH3对应OC3 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  TIM_ ...

  2. 关于STM32CubeMX使用LL库设置PWM输出

    HAL和LL库 HAL是ST为了实现代码在ST家族的MCU上的移植性,推出的一个库,称为硬件抽象层,很明显,这样做将会牺牲存储资源,所以项目最后的代码比较冗余,且运行效率大大降低,运行速度受制于fla ...

  3. PWM输出

    PWM(Pulse Width Modulation),脉冲宽度调制. 脉冲的频率由ARR控制,ARR越大频率越小:占空比由CCRx控制,CCRx越小占空比越大. 捕获/比较通道的输出部分(通道1) ...

  4. TIMER门控模式控制PWM输出长度

    TIMER门控模式控制PWM输出长度 参照一些网友代码做了些修改,由TIM4来控制TIM2的PWM输出长度, 采用主从的门控模式,即TIM4输出高时候TIM2使能输出 //TIM2 PWM输出,由TI ...

  5. STM32 PWM输出(映射)

    STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通用定时器也能同时产生多达 4 ...

  6. stm32 PWM输出学习

    STM32 的定时器除了 TIM6 和 7,其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.通用定时器也能同时产生多达 4路 ...

  7. STM8S PWM输出停止后 IO口电平输出

    STM8S有许多定时器支持PWM输出,但在停止定时器后,IO口电平到底是多少呢?或高或低. 因此,为了确定PWM停止输出电平后其对应的值是多少,我们在停止PWM输出时需要对CCMR1寄存器进行设置. ...

  8. STM32: TIMER门控模式控制PWM输出长度

    搞了两天单脉冲没搞定,无意中发现,这个利用主从模式的门控方式来控制一路PWM的输出长度很有效. //TIM2 PWM输出,由TIM4来控制其输出与停止 //frequency_tim2:TIM2 PW ...

  9. STM8 关闭PWM输出后的电平输出问题解决

    STM系列的单片机PWM输出如果被关断比如用TIM1_CtrlPWMOutputs进行停止输出后,电平的高低处于不确定的状态. 他取决于: 1.GPIO初始化的特性 2.关断那一刻时的电平 3.CCM ...

  10. STM32F103ZET6 PWM输出

    1.通用定时器的PWM功能 STM32F103ZET6有4个通用定时器,分别是TIM2.TIM3.TIM4.TIM5. 通用定时器由一个可编程预分频器驱动的16位自动装载计数器构成. 通用定时器的很多 ...

随机推荐

  1. Go语言核心36讲25

    你好,我是郝林,今天我分享的主题是:测试的基本规则和流程(上). 你很棒,已经学完了本专栏最大的一个模块!这涉及了Go语言的所有内建数据类型,以及非常有特色的那些流程和语句. 你已经完全可以去独立编写 ...

  2. VM安装Centos7操作系统

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying 视频教程:https://live.csdn.ne ...

  3. HDLBits答案——Verilog Language

    Verilog Language 1 Basics 1.1 Wire module top_module( input in, output out ); assign out = in; endmo ...

  4. Swing常用窗体

    Swing常用窗体 Swing 主要具有以下特点: ( 1 )轻量级组件. ( 2 )可插入外观组件. 窗体作为Swing的应用程序中组件的承载体,处于非常重要的地位.Swing中常用的窗体包括JFr ...

  5. 【Devexpress】Gridcontorl动态创建列不显示的问题

    通过代码创建列但是不显示,这个原因是因为代码创建的列Visible属性默认是false 所以需要设置为true就会显示了 gridColumn.Visible = true;

  6. Mybatis-Plus通用枚举 -基于jackson(Springboot-web内置)

    枚举类 使用 @EnumValue注解标识数据库字段 package com.example.enumpackage; import com.baomidou.mybatisplus.annotati ...

  7. npm 依赖下载报错:主机名/IP与证书的altname不匹配

    npm 依赖下载报错:主机名/IP与证书的altname不匹配: //取消ssl验证 npm set strict-ssl false npm config set registry http://r ...

  8. UEFI引导linux启动过程的顺序,及修改办法

    注意这里我说的是 uefi 启动 启动过程顺序 正常安装完一个Linux系统,硬盘会被分成俩个分区,一块是 fat32 文件系统(启动项存放位置),一块是ext4 文件系统(也就是系统真正的安装位置) ...

  9. ChatGPT 会开源吗?

    最近,我被一款叫做 ChatGPT 的人工智能(AI)聊天机器人,刷屏了.网上有人说它是搜索引擎杀手,还有人说它将取代程序员... 最后,我还是没扛住铺天盖地的赞美,跑去注册了个账号,抱着调侃&quo ...

  10. 定制.NET 6.0的Middleware中间件

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 在本文中,我们将学习中间件,以及如何使用它进一步定制应用程序.我们将快速学习中间件 ...