澳门威尼斯人官网手机网 > 控制/MCU > 正文

如何采用STM32单片机产生PWM

2018年12月06日 15:36 次阅读

STM32产生PWM是非常的方便的,要需要简单的设置定时器,即刻产生!

(1)使能定时器时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

(2)定义相应的GPIO:

/* PA2,3,4,5,6输出-》Key_Up,Key_Down,Key_Left,Key_Right,Key_Ctrl */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //下拉接地,检测输入的高电平

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度

GPIO_Init(GPIOA, &GPIO_InitStructure);

如何采用STM32单片机产生PWM

/* PA7用于发出PWM波 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度

GPIO_Init(GPIOA, &GPIO_InitStructure);

(3)如果是产生PWM(频率不变,占空比可变),记得打开PWM控制,在TIM_ConfiguraTIon()中。

TIM_Cmd(TIM3,ENABLE);

/* TIM1 Main Output Enable */

TIM_CtrlPWMOutputs(TIM1,ENABLE);

利用定时器产生不同频率的PWM有时候,需要产生不同频率的PWM,这个时候,设置与产生相同PWM的程序,有关键的不一样。

(一) 设置的原理

利用改变定时器输出比较通道的捕获值,当输出通道捕获值产生中断时,在中断中将捕获值改变,这时, 输出的I/O会产生一个电平翻转,利用这种办法,实现不同频率的PWM输出。

(二)关键设置

在定时器设置中:TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable);

在中断函数中:

if (TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET)

{

TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

capture = TIM_GetCapture2(TIM3);

TIM_SetCompare2(TIM3, capture + Key_Value);

}

一个定时器四个通道,分别产生不同频率(这个例子网上也有)

vu16 CCR1_Val = 32768;

vu16 CCR2_Val = 16384;

vu16 CCR3_Val = 8192;

vu16 CCR4_Val = 4096;

void TIM_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

/* TIM2 clock enable */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

/* ---------------------------------------------------------------

TIM2 Configuration: Output Compare Toggle Mode:

TIM2CLK = 36 MHz, Prescaler = 0x2, TIM2 counter clock = 12 MHz

CC1 update rate = TIM2 counter clock / CCR1_Val = 366.2 Hz

CC2 update rate = TIM2 counter clock / CCR2_Val = 732.4 Hz

CC3 update rate = TIM2 counter clock / CCR3_Val = 1464.8 Hz

CC4 update rate = TIM2 counter clock / CCR4_Val = 2929.6 Hz

--------------------------------------------------------------- */

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = 65535;

TIM_TimeBaseStructure.TIM_Prescaler = 2;

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

/* Channel 1 Configuration in PWM mode */

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; //PWM模式2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;//反向通道无效

TIM_OCInitStructure.TIM_Pulse = CCR1_Val;//占空时间

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性

TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; //互补端的极性

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;

TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

TIM_OC1Init(TIM2,&TIM_OCInitStructure); //通道1

TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Disable);

TIM_OCInitStructure.TIM_Pulse = CCR2_Val; //占空时间

TIM_OC2Init(TIM2,&TIM_OCInitStructure);//通道2

TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable);

TIM_OCInitStructure.TIM_Pulse = CCR3_Val; //占空时间

TIM_OC3Init(TIM2,&TIM_OCInitStructure); //通道3

TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Disable);

TIM_OCInitStructure.TIM_Pulse = CCR4_Val; //占空时间

TIM_OC4Init(TIM2,&TIM_OCInitStructure);//通道4

TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Disable);

/* TIM2 counter enable */

TIM_Cmd(TIM2,ENABLE);

/* TIM2 Main Output Enable */

//TIM_CtrlPWMOutputs(TIM2,ENABLE);

/* TIM IT enable */

TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);

}

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

/*允许总线CLOCK,在使用GPIO之前必须允许相应端的时钟。

从STM32的设计角度上说,没被允许的端将不接入时钟,也就不会耗能,

这是STM32节能的一种技巧,*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

/* PA2,3,4,5,6,7输出-》LED1,LED2,LED3,LED4,LED5,LED6 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* PB0,1输出-》LED7,LED8*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* PA0,1-》KEY_LEFT,KEY_RIGHT*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;? //上拉输入

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* PC13-》KEY_UP*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;? //上拉输入

GPIO_Init(GPIOC, &GPIO_InitStructure);

/* PB5-》KEY_DOWN*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;? //上拉输入

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* GPIOA Configuration:TIM2 Channel1, 2, 3 and 4 in Output */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

/* Configure one bit for preemption priority */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

u16 capture = 0;

extern vu16 CCR1_Val;

extern vu16 CCR2_Val;

extern vu16 CCR3_Val;

extern vu16 CCR4_Val;

void TIM2_IRQHandler(void)

{

/* TIM2_CH1 toggling with frequency = 183.1 Hz */

if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)

{

TIM_ClearITPendingBit(TIM2, TIM_IT_CC1 );

capture = TIM_GetCapture1(TIM2);

TIM_SetCompare1(TIM2, capture + CCR1_Val );

}

/* TIM2_CH2 toggling with frequency = 366.2 Hz */

if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)

{

TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);

capture = TIM_GetCapture2(TIM2);

TIM_SetCompare2(TIM2, capture + CCR2_Val);

}

/* TIM2_CH3 toggling with frequency = 732.4 Hz */

if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET)

{

TIM_ClearITPendingBit(TIM2, TIM_IT_CC3);

capture = TIM_GetCapture3(TIM2);

TIM_SetCompare3(TIM2, capture + CCR3_Val);

}

/* TIM2_CH4 toggling with frequency = 1464.8 Hz */

if (TIM_GetITStatus(TIM2, TIM_IT_CC4) != RESET)

{

TIM_ClearITPendingBit(TIM2, TIM_IT_CC4);

capture = TIM_GetCapture4(TIM2);

TIM_SetCompare4(TIM2, capture + CCR4_Val);

}

}

一个定时器一个通道,产生不同频率

其它的设置都一样,就是在主函数中修改一个参数,然后在定时器中断中,根据这个参数,改变频率。

#include “stm32libstm32f10x.h”

#include “hal.h”

volatile u16 Key_Value=1000;? //用于保存按键相应的PWM波占空比值

int main(void)

{

ChipHalInit();

ChipOutHalInit();

while(1)

{?

? if( (!Get_Key_Up)&(!Get_Key_Down)&(!Get_Key_Left)&(!Get_Key_Right)&(!Get_Key_Ctrl) )

? {

? ? Key_Value=12000;

? }

? else

? {

? ? if(Get_Key_Up)? ? //按键前进按下 ,对应1kHz

? ? {

? ? Key_Value=6000;

? ? }

? ? else if(Get_Key_Down)? //按键后退按下 ,对应2kHz

? ? {

? ? ? Key_Value=3000;

? ? }

? ? Delay_Ms(20);? ? ? //10ms延时

? ? if(Get_Key_Left)? ? //按键左转按下,对应3kHz

? ? {

? ? Key_Value=2000;

? ? }

? ? else if(Get_Key_Right) //按键右转按下,对应4kHz

? ? {

? ? ? Key_Value=1500;

? ? }?

? ? Delay_Ms(20);? ? ? //10ms延时

? ? if(Get_Key_Ctrl)? ? //按键控制按下,对应5kHz

? ? {

? ? ? Key_Value=1200;

? ? }

? ? Delay_Ms(20);? ? ? //10ms延时

? }

}

}

extern volatile u16 Key_Value;

u16 capture=0;

void TIM3_IRQHandler(void)

{

/* TIM2_CH2 toggling with frequency = 366.2 Hz */

if (TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET)

{

? ? TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

capture = TIM_GetCapture2(TIM3);

? ? TIM_SetCompare2(TIM3, capture + Key_Value);

}

}

void TIM3_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

/* TIM2 clock enable */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/*TIM1时钟配置*/

TIM_TimeBaseStructure.TIM_Prescaler = 5;? ? ? //预分频(时钟分频)72M/6=12M

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;? //向上计数

TIM_TimeBaseStructure.TIM_Period = 65535;? ? ? ? //装载值选择最大

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

/* Channel 1 Configuration in PWM mode */

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle; //PWM模式2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;//反向通道无效

TIM_OCInitStructure.TIM_Pulse = Key_Value; //占空时间

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性

TIM_OCInitStruct

技术专区

下载发烧友APP

打造属于您的人脉电子圈

关注澳门威尼斯人官网手机微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

澳门威尼斯人官网手机观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

Simulink中的模拟与现实之间的差异

发表于 2018-12-06 15:41 2次阅读
Simulink中的模拟与现实之间的差异

STM32单片机的USART接收数据问题解决方案

先使用USART中断函数接收数据,判断是否接收到每帧数据的起始标记字符。如果接收到就关闭USART中...

发表于 2018-12-06 15:36 2次阅读
STM32单片机的USART接收数据问题解决方案

PSoC6中的TCPWM与PSoC 5LP中的PWM相同

发表于 2018-12-06 15:07 13次阅读
PSoC6中的TCPWM与PSoC 5LP中的PWM相同

低成本增强型隔离式10kW三相逆变器紧凑型设计

发表于 2018-12-06 14:17 30次阅读
低成本增强型隔离式10kW三相逆变器紧凑型设计

符合EMC标准的汽车日间行车灯和位置灯解决方案

发表于 2018-12-06 13:52 26次阅读
符合EMC标准的汽车日间行车灯和位置灯解决方案

PWM脉宽调制电路

发表于 2018-12-06 13:36 73次阅读
PWM脉宽调制电路

基于XE164的三电平逆变器调制算法的实现

发表于 2018-12-06 09:58 6次阅读
基于XE164的三电平逆变器调制算法的实现

线性LED驱动器IC为何必然替代偏压电阻器

发表于 2018-12-06 09:53 9次阅读
线性LED驱动器IC为何必然替代偏压电阻器

Infineon功率芯片应用于智能车灯控制系统的解决方案

发表于 2018-12-06 09:45 21次阅读
Infineon功率芯片应用于智能车灯控制系统的解决方案

请问stm32中为什么用TIM3生成的PWM,再用tim5去检测

发表于 2018-12-06 09:01 41次阅读
请问stm32中为什么用TIM3生成的PWM,再用tim5去检测

读取flash中的语音文件WAV如何导入到flash中

发表于 2018-12-06 08:51 57次阅读
读取flash中的语音文件WAV如何导入到flash中

影响电流采样的一个因素——延迟源!

下面表格详细指明了电机驱动系统拓扑中存在的七个延迟源及其典型的时间。这些延迟将叠加在一起,产生的影响...

发表于 2018-12-05 16:57 273次阅读
影响电流采样的一个因素——延迟源!

如何构建STM32单片机keil的开发环境

在工程文件下,新建Startup、Headers、User、Libraries、CMSIS、List...

发表于 2018-12-05 14:52 47次阅读
如何构建STM32单片机keil的开发环境

STM32单片机USB速度慢的原因解析

全速的USB设备,最大速度12Mb/s,但是如果跑的是HID之类慢速设备的协议,那么速度就没有那么快...

发表于 2018-12-04 15:06 96次阅读
STM32单片机USB速度慢的原因解析

STM32单片机的EXIT中断解析

工程概要说明:定义一个按键(可自己定义),每按键一次,响应中断一次,在中断函数中LED提示灯变化一次...

发表于 2018-12-04 15:04 64次阅读
STM32单片机的EXIT中断解析

STM32单片机GPIO寄存器的功能解析

对于GPIO端口,每个端口有16个引脚,每个引脚的模式由寄存器的四个位控制,每四位又分为两位控制引脚...

发表于 2018-12-04 14:54 84次阅读
STM32单片机GPIO寄存器的功能解析

STM32单片机对ADS1246芯片的驱动

ADS1246的SPI时序,这个是需要提一下的,一般来说,SPI协议在上升沿锁存数据,下降沿更新数据...

发表于 2018-12-03 14:39 89次阅读
STM32单片机对ADS1246芯片的驱动

STM32单片机的can总线的配置

CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式 ...

发表于 2018-12-03 14:31 102次阅读
STM32单片机的can总线的配置

STM32单片机的SYSTick定时器的设置

SysTick 是一个24 位的倒计数定时器,当计到0 时,将从RELOAD 寄存器中自动重装载定时...

发表于 2018-12-03 14:27 55次阅读
STM32单片机的SYSTick定时器的设置

STM32单片机FSMC的使用解析

LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Registe...

发表于 2018-12-03 14:17 58次阅读
STM32单片机FSMC的使用解析

STM32单片机如何实现规则多通道转换

DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR...

发表于 2018-11-30 16:22 99次阅读
STM32单片机如何实现规则多通道转换

STM32单片机的断言机制函数assert_pa...

这个宏定义的作用就是检查参数PERIPH,判断参数PERIPH是否为GPIOX(A.。.G)基址中的...

发表于 2018-11-30 16:10 97次阅读
STM32单片机的断言机制函数assert_pa...

如何采用STM32单片机实现SPI的驱动

void SPI_cfg(void){ SPI_InitTypeDef SPI_InitStr...

发表于 2018-11-30 15:56 93次阅读
如何采用STM32单片机实现SPI的驱动

STM32单片机对红外接收系统的设计

红外接收头一般是接收、放大、解调一体头,一般红外信号经接收头解调后,数据“0”和“1”的区别通常体现...

发表于 2018-11-30 15:32 86次阅读
STM32单片机对红外接收系统的设计

STM32单片机的IAP向量问题解决方案

// 1:复制用户代码中的中断向量表到SRAM首地址 // 2: 开启SRAM的重映射功能,将...

发表于 2018-11-30 15:24 82次阅读
STM32单片机的IAP向量问题解决方案

STM32单片机的ADS1115通过模拟I2C驱...

收获:对于I2C通信协议的理解更加深刻,对ADS1115也能进行单通道的使用。I2C的开始、发送/读...

发表于 2018-11-29 16:49 83次阅读
STM32单片机的ADS1115通过模拟I2C驱...

STM32单片机SPI的使用原理解析

GPIO_InitTypeDef GPIO_InitStructure; //配置SPI2管脚...

发表于 2018-11-29 16:35 75次阅读
STM32单片机SPI的使用原理解析

STM32单片机重映射USART设计

外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1、2、3,它们是用来选择EXT...

发表于 2018-11-29 16:27 63次阅读
STM32单片机重映射USART设计

STM32单片机的ADC多通道采样

这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比...

发表于 2018-11-29 16:12 89次阅读
STM32单片机的ADC多通道采样

STM32单片机的CPU运行性能的算法测试

此算法是基于操作系统的,理论上不限于任何操作系统,只要有任务调度就可以。本文将以FreeRTOST为...

发表于 2018-11-29 16:01 280次阅读
STM32单片机的CPU运行性能的算法测试

PWM和DC这两种屏幕调光方式究竟是怎么回事

很多人认为亮度越低,PWM调光的频率就越低,就对眼镜不好,这是错误的。因为对于PWM屏来说,影响亮度...

发表于 2018-11-29 10:36 464次阅读
PWM和DC这两种屏幕调光方式究竟是怎么回事

如何将STM32单片机的JTAG口作为GPIO使...

针对F4系列,STM32F4库函数中,已经取消了GPIO_*PinRemapConfig()函数,对...

发表于 2018-11-28 16:43 83次阅读
如何将STM32单片机的JTAG口作为GPIO使...

STM32单片机的usb上电和断电函数的定义

usb_pwr.c 这个文件看文件名就知道跟功耗有关了,有很多的状态:上电、掉电、挂起、恢复。

发表于 2018-11-28 16:35 88次阅读
STM32单片机的usb上电和断电函数的定义

STM32单片机对CAN过滤器的设置方法

在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否...

发表于 2018-11-28 16:25 83次阅读
STM32单片机对CAN过滤器的设置方法

如何通过STM32驱动nRF24L01发送数据

最近在一个项目中用到了nRF24L01这个无线2.4G收发芯片,项目中有主机和分机,默认都是使用数据...

发表于 2018-11-28 15:53 74次阅读
如何通过STM32驱动nRF24L01发送数据

STM32单片机ADC的模拟看门狗的测试

ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LT...

发表于 2018-11-27 16:49 95次阅读
STM32单片机ADC的模拟看门狗的测试

STM32单片机对正交编码器的驱动

STM32正交编码器驱动,引入(突变)带进位的位置环和速度环

发表于 2018-11-27 16:12 58次阅读
STM32单片机对正交编码器的驱动

如何利用STM32单片机发送字符串

一、STM32有自己的字符发送函数。 void PC_SendChar(uint8_t Dat...

发表于 2018-11-26 15:26 85次阅读
如何利用STM32单片机发送字符串

基于STM32单片机的USB时钟配置设计

RCC_DeInit();//将外设RCC寄存器重设为缺省值 /*EnableHSE*/ ...

发表于 2018-11-26 15:20 80次阅读
基于STM32单片机的USB时钟配置设计

STM32单片机的低功耗模式待机唤醒设计

将程序下载到开发板上后,LED灯会不断地亮灭,当按下KEY2键超过3s时,LED灯灭,标志着单片机进...

发表于 2018-11-26 14:40 85次阅读
STM32单片机的低功耗模式待机唤醒设计

STM32的ADC单次转换设计

//先配置IO口: ADC_InitTypeDef adcInitStruct; ///...

发表于 2018-11-23 15:40 84次阅读
STM32的ADC单次转换设计

STM32的ADC编程方法总结

这里的ADC转换也来使用DMA---这个也是STM32的ADC转换最常见的方式。 第一步是了解...

发表于 2018-11-23 15:30 159次阅读
STM32的ADC编程方法总结

STM32单片机在KIEL4配置开发中的设置

开发环境:KIEL4,芯片STM32F103VCT6。函数库VC3.5 1.配置开发环境。 2....

发表于 2018-11-23 15:01 68次阅读
STM32单片机在KIEL4配置开发中的设置

开关电源发展趋势说明

说到开关电源,也就是一种相对线性的电源,它通过使用先进电力电子技术控制开关时间比并保持稳定输出电压的...

发表于 2018-11-22 16:47 545次阅读
开关电源发展趋势说明

STM32单片机TIM模块定时器向上溢出的输出比...

首先有一点需要注意:FWLib固件库目前的最新版应该是V2.0.x,V1.0.x版本固件库中,TIM...

发表于 2018-11-22 16:20 99次阅读
STM32单片机TIM模块定时器向上溢出的输出比...

关于开关电源常见的故障解决办法

开关电源作为一种电源转换设备在生活中随处可见,而一般人很少会知道它的基本常识和作用有哪些。开关电源是...

发表于 2018-11-22 15:58 466次阅读
关于开关电源常见的故障解决办法

STM32单片机如何通过定时器的控制输出PWM

STM32F103ZET6里共有8个定时器,其中高级定时器有TIM1-TIM5、TIM8,共6个。 ...

发表于 2018-11-22 15:56 130次阅读
STM32单片机如何通过定时器的控制输出PWM

带你了解旋转编码器的作用是什么

编码器是一种用于运动控制的传感器,在我们的生活当中发挥着巨大的作用。它利用光电、电磁、电容或电感等感...

发表于 2018-11-22 10:58 137次阅读
带你了解旋转编码器的作用是什么

STM32单片机中RTC的秒中断的原理解析

RTC(Real Time Clock)是实时时钟的意思,它其实和TIM有点类似,也是利用计数的原理...

发表于 2018-11-21 15:59 124次阅读
STM32单片机中RTC的秒中断的原理解析

STM32单片机的Usart2串口的调试方法

先是参考http://wenku.baidu.com/view/78f6b1350b4c2e3f57...

发表于 2018-11-20 16:10 122次阅读
STM32单片机的Usart2串口的调试方法

如何使用STM32单片机设置PWM输出

环境: 主机:XP 开发环境:MDK4.23 MCU:STM32F103CBT6 ...

发表于 2018-11-20 16:03 162次阅读
如何使用STM32单片机设置PWM输出

STM32单片机实现外部中断的步骤及方法

和配置NVIC一样,这也是EXTI配置的一般步骤:清除相应中断线标志位(这个很重要,刚开始一直没找到...

发表于 2018-11-20 15:46 166次阅读
STM32单片机实现外部中断的步骤及方法

掌握这三个思路告诉你如何使用STM32测量频率和...

显然,很容易想到——利用DMA。所以,笔者使用输入捕获事件触发DMA来搬运寄存器而非触发中断即可,然...

发表于 2018-11-16 15:07 359次阅读
掌握这三个思路告诉你如何使用STM32测量频率和...

针对LED照明的全集成开关型变换方案

LED照明较其他照明产品具有绿色、节能、环保、长寿命等优点,随着整体成本降低,LED照明开始广泛使用...

发表于 2018-11-16 08:51 367次阅读
针对LED照明的全集成开关型变换方案

基于STM32单片机连接射频si4438模块的方...

SI4438射频模块参数: 1、频率范围:425-525MHz 2、数字接收信号强度指示...

发表于 2018-11-15 16:55 131次阅读
基于STM32单片机连接射频si4438模块的方...

基于STM32单片机的ADC与DMA配置的介绍与...

本文使用ADC转换电位器输出的电压值,并用DMA模式传输转换的结果,每8次采样转换取平均值,做一个简...

发表于 2018-11-15 16:05 260次阅读
基于STM32单片机的ADC与DMA配置的介绍与...

STM32单片机的5个时钟源解析

1. STM32的5个时钟源 a。高速内部时钟 HSI,大约为8MHz b。高速外部时钟...

发表于 2018-11-14 16:30 135次阅读
STM32单片机的5个时钟源解析

STM32单片机ILI9325系列TFT的驱动原...

为了更好,更深入学习了解ILI9325系列TFT的驱动原理,自己做了一块TFT板子。为了方便测试,在...

发表于 2018-11-14 15:53 144次阅读
STM32单片机ILI9325系列TFT的驱动原...

如何设计无人机的PWM捕获电路

无人驾驶飞机简称“无人机”,英文缩写为“UAV”,是利用无线电遥控设备和自备的程序控制装置操纵的不载...

发表于 2018-11-14 08:35 697次阅读
如何设计无人机的PWM捕获电路

STM32单片机的系统定时器初始化设置

#include“stm32f10x_lib.h” unsigned char sys_nub...

发表于 2018-11-12 16:10 138次阅读
STM32单片机的系统定时器初始化设置

STM32单片机的外部中断和中断控制器的特点解析

在M3中有两个优先级的概念-抢占优先级和响应优先级。每一个中断源都必须指定这两种优先级。这里的中断抢...

发表于 2018-11-12 15:40 122次阅读
STM32单片机的外部中断和中断控制器的特点解析

STM32实现对RTC闹钟唤醒的设计

工程中用到低功耗的控制,本来想使用待机模式,后来发现待机后所有IO口为高阻态,这样对于一些IO口控制...

发表于 2018-11-12 15:31 168次阅读
STM32实现对RTC闹钟唤醒的设计

STM32单片机的重映射与地址映射的使用方法及步...

打开重映射时钟和USART重映射后的I/O口引脚时钟, RCC_APB2PeriphClock...

发表于 2018-11-12 15:04 186次阅读
STM32单片机的重映射与地址映射的使用方法及步...

基于STM32的八种GPIO输入输出模式解析

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,...

发表于 2018-11-09 16:32 180次阅读
基于STM32的八种GPIO输入输出模式解析

基于STM32单片机启动文件的作用和启动过程解析

bootloader 分为boot 和loader,更多的时候是针对于linux系统,windows...

发表于 2018-11-09 16:15 195次阅读
基于STM32单片机启动文件的作用和启动过程解析

STM32单片机UART发送配置的步骤及方法

字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬...

发表于 2018-11-08 16:59 151次阅读
STM32单片机UART发送配置的步骤及方法

如何从STM32F030C8移植到GD32F13...

一、添加芯片类型判断程序: 在库中的启动代码前面加一段,读一下ID code,自动区分一下芯片...

发表于 2018-11-08 16:52 106次阅读
如何从STM32F030C8移植到GD32F13...

STM32F4发送和接收长度数据的判断

STM32F4 串口收发使用DMA还是很方便的。但是配置DMA时需要配置数据长度,这一点对于发送来说...

发表于 2018-11-08 16:25 146次阅读
STM32F4发送和接收长度数据的判断

基于STM32F4单片机USART寄存器控制的设...

USART又叫通用同步异步收发器,塔提供了一种灵活的方法与工业使用标准NRZ异步春航数据格式的外部设...

发表于 2018-11-07 16:30 96次阅读
基于STM32F4单片机USART寄存器控制的设...

STM32F103系列单片机中的定时器工作原理解...

STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器...

发表于 2018-11-07 16:30 172次阅读
STM32F103系列单片机中的定时器工作原理解...

DRV595 15V/±3A 高效 PWM 功率...

DRV595是一款高效,高电流功率驱动器,此驱动器非常适合于在电源电压介于4.5V至26V的系统内驱动多种负载.VSP运行和低输出级导通电阻大大降低了放大器内的功率耗散。 DRV595先进的振荡器/锁相环(PLL)电路采用多个开关频率选项;这与一个主控/受控选项一起实现,从而使多个器件同步成为可能。 DRV595受到短路,过热,过压和欠压保护等的全面保护。故障被报告给处理器,从而避免过载情况下对器件造成的损坏。 特性 ±4A输出电流 宽输入电源电压范围:4.5V-26V 高效率产生低热量 多重开关频率 主器件/从器件同步 高达1.2MHz开关频率 带有高电源抑制比(PSRR)的反馈电源级架构减少了对于电源供应器(PSU)的需要 单一电源减少了组件数量 集成的自保护电路包括过压,欠压,过温和短路保护,并且具有错误报告功能 热增强型封装 DAP(32引脚HTSSOP封装) < /ul> -40°C至85°C环境温度范围 参数 与其它产品相比 TEC/激光 PWM 功率放大器   Vs (Min) (V) Vs (Max) (V) rDS(on) (Ohms) Output Current (Typ) (A) Operating Temperature Range (C) Package Grou...

发表于 2018-08-17 16:28 12次阅读
DRV595 15V/±3A 高效 PWM 功率...