#include"sys.h"
#include"timer.h"
void TIM4_PWM_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<2;//使能TIM4
RCC->AHB1ENR|=1<<3;//使能GPIOD
GPIO_Set(GPIOD,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_AF_Set(GPIOD,12,2);
TIM4->ARR=arr;
TIM4->PSC=psc;
TIM4->CCMR1|=6<<4;//PWM1 mode
TIM4->CCMR1|=1<<3;
TIM4->CCER|=0<<1;// 高电平有效
TIM4->CCER|=1<<0;//使能
TIM4->CR1|=1<<7;
TIM4->CR1|=1<<0;
}
#include"sys.h"
#include"delay.h"
#include"led.h"
#include"timer.h"
int main(void)
{
Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz
delay_init(168); //延时初始化
Led_Init();
LED0=0;
TIM4_PWM_Init(100-1,84-1);//1M HZ
PWM_Value=80;//调整PWM_Value 就能改变占空比 800/1000=80%
while(1)
{
LED0=!LED0;
delay_ms(500);
}
}
以代码为例 计数周期为1MHZ 想得到10K的 即 1M/10K 得100 所以 ARR值为100-1
关键字:stm32F407 PWM方波 PWM周期
引用地址:
基于stm32F407 10KHZPWM方波以及PWM周期计算
推荐阅读最新更新时间:2024-03-16 16:07
STM32F407驱动MT9T001 CMOS图像传感器模块
一、MT9T001图像传感器介绍 MT9T001是MICRON公司生产的一款CMOS图像传感器,分辨率可以达到QXGA,有效像素阵列为2048H*1536V。可实现片上开窗,行列跳跃像素,以及快照功能,内部寄存器编程采用I2C总线。 MT9T001可以工作在其默认模式或者通过编程可以选择帧的大小,曝光时间,色彩增益,以及其他相关参数。默认的工作模式是以12fps的帧率输出一个QXGA的图像,片载的AD转换器可以提供每个像素10bit的分辨率。可提供行场同步信号,以及用于同步有效数据的像素时钟。 MT9T001的像素阵列为2112行*1568列,但是并不是所有的像素是有效像素。如图3所示,从第0列到27列以及从2085列到
[单片机]
关于stm32f407 串口程序编写过程 总结
一.背景介绍 17/07毕业,通过完成试用期的几个小项目,感觉自己能独立的完成部分项目,便接手了配合硬件工程师,将公司模块升级的任务(M3-- M4) 目标: 1.bootloader更改 2.将rt_thread 系统移植到 stm32f407板子上 3.将485,can , gsm ,以太网 驱动接口补上 4.重新设计程序收发流程,完成实时收发数据 (数据字典,wwdg , 校验设计,对上,对下的协议修改等等 ,这些已在之前完成,只要调用响应接口,调试下即可) 二.目标实现 目标1.bootloader更改 通过学
[单片机]
stm32f407串口通信使用流程
初始化 1.定义初始化变量 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; 2.使能时钟 GPIO开启AHB1时钟 USART1开启APB2时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟 3.配置GPIO端口为引脚复用USA
[单片机]
STM32F407外扩SRAM配置
以下SRAM的程序是在清时代STM32F407开发板上测试通过 开发板PCB完整工程连接: http://www.cirmall.com/circuit/7 ... F%EF%BC%81#/details 淘宝连接:https://item.taobao.com/item.htm?id=557618550100 bsp_SRAM.c文件 #include sram.h #include usart.h ////////////////////////////////////////////////////////////////////////////////// //本程序只供学习使用,未经作者许
[单片机]
STM32F407 驱动外部SRAM
需要驱动的SRAM型号为IS61LV25616AL,性价比比51216的高很多 配置Cubemx 这几个时序比较关键,可以按照手册来计算,我用下来这几个数值比较合适。 然后就没有然后了,生成代码就可以用了。。。 检查SRAM内容是否正确 uint8_t bsp_TestExtSRAM(void) { uint32_t i; uint32_t *pSRAM; uint8_t *pBytes; uint32_t err; const uint8_t ByteBuf = {0x55, 0xA5, 0x5A, 0xAA}; /* 写SRAM */ pSRAM = (uint32_t *)EXT_SRAM_ADDR
[单片机]
Stm32F407控制直流减速编码电机--使用增量式速度PI
今天给大家分享一个我先前使用的直流电机的增量式速度PI的算法。首先跟大家介绍应用场景,我们使用 增量式速度PI 控制直流减速编码电机是在 参加 全国大学生工程训练综合能力竞赛时 为了控制一个麦克纳姆轮小车而准备的, 在应用需求中我们一共是需要控制四路 电机 分别对四个电机的速度、方向进行控制,以此来实现对车身姿态的精确控制。可以认为速度控制时 脉轮车控制的一个基本需求。(此处说的脉轮车是指 自动运行的, 手动操作的就另当别论) 声明:以下文章中电机 指 直流减速编码电机 如果您只是向要一份参考代码, 那么他的链接在这里; 配合文章会更好的理解代码哟 我们先前使用的电机型号如下 我们使用的是500线的光电编码器,控制相对
[单片机]
STM32F407-获取GPIO电平状态
判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE- IDR& GPIO_IDR_IDR2) { 函数体; } 当PE2端口为高电平时,if条件为真;当PE2口为低电平时,if条件为假; ② 判断单个端口是否为低电平: if((~GPIOE- IDR)& GPIO_IDR_IDR2) { 函数体; } 分析:首先通过 &GPIO_IDR_IDR屏蔽掉PE2之外的其他PE口。当PE2为高电平时,GPIO-〉IDR的bit2为‘1’,取反后为‘0’,因此条件为假;当PE2为低电平时,GPIO-〉IDR的
[单片机]
STM32开发笔记59: STM32F407的启动模式
单片机型号:STM32F407VGT6 本文介绍STM32F407的启动模式,也称为BOOT模式。STM32F407可以有3种方式进行启动,见下表,我们一般采用从FLASH进行程序启动的方式,所以,对于一般的电路图只需将BOOT0引脚下拉到地,即可满足设计要求,而不需考虑BOOT1引脚。 不过,STM32内部还隐含着另外一种启动方式,如下列文字所述。其表述的思想是STM32在出厂时已内嵌bootloader程序,可以从USART1、USART3、CAN2和USB OTG FS进行启动。 这种启动模式,需将BOOT0设置为1,BOOT1设置为0。所以如果希望应用STM32的Bootloader功能,则需将BO
[单片机]