当前位置:网站首页>PWM breathing lamp
PWM breathing lamp
2022-07-02 16:43:00 【Let everything burn】
Mission :
- Learn timer output PWM, Realization PWM Breathing lights
- understand PWM Principle of breathing lamp
And pwm Knowledge points about controlling breathing lights
The previous one used the delay function to control the steering gear , The delay function will occupy the MCU cup, inefficiency
pwm Pulse width modulator ( Duty cycle ): Control the high and low level
Use the digital output of microprocessor to control the analog circuit
High level LED Lighten up , Low level LED Extinguish
The length of the high level determines LED The brightness of
There should be a complete cycle , The length of high and low levels changes constantly , Cycle length ( frequency ) unchanged , A cycle appears repeatedly
pwm May by stm32 Timer generation in , Advanced timer TIM1, Ordinary timer TIM2,TIM3,TIM4
ccrx Indicates the change position of high and low levels in a cycle
ccrx Adjust the high level up to reduce the column , Adjust the high-level ratio downward to increase
It can make LED1 or LED2 bright , But two cannot light at the same time
Complete code :
main.c
int main(void)
{
u16 t = 500;
u8 dir = 1;
//delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//uart_init(115200);
LED_Init();
TIM3_PWM_Init(59999,23);
while(1)
{
delay_ms(10);
if(dir)t=t+400;
else t=t-400;
if(t>60000)dir = 0;
if(t==500)dir = 1;
// TIM_SetCompare3(TIM3,t);
TIM_SetCompare4(TIM3,t);
pwm.c
void TIM3_PWM_Init(u16 arr,u16 psc){
//TIM3 PWM initialization arr Reload value psc The prescaled coefficients
GPIO_InitTypeDef GPIO_InitStrue;
TIM_OCInitTypeDef TIM_OCInitStrue;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);// Can make TIM3 And the related GPIO The clock
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);// Can make GPIOB The clock (LED stay PB0 Pin )
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);// Can make AFIO The clock ( Timer 3 passageway 3 Need to remap to BP5 Pin )
// GPIO_InitStrue.GPIO_Pin=GPIO_Pin_0; // TIM_CH3
GPIO_InitStrue.GPIO_Pin=GPIO_Pin_1; // TIM_CH4
GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP; // Reuse push pull
GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz; // Set the maximum output speed
GPIO_Init(GPIOB,&GPIO_InitStrue); //GPIO Port initialization settings
// GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE); // mapping , Remapping is only used for 64、100、144 Single chip microcomputer foot
// When there is no remapping ,TIM3 The four channels of CH1,CH2,CH3,CH4 They correspond to each other PA6,PA7,PB0,PB1
// When partially remapped ,TIM3 The four channels of CH1,CH2,CH3,CH4 They correspond to each other PB4,PB5,PB0,PB1 (GPIO_PartialRemap_TIM3)
// When completely remapped ,TIM3 The four channels of CH1,CH2,CH3,CH4 They correspond to each other PC6,PC7,PC8,PC9 (GPIO_FullRemap_TIM3)
TIM_TimeBaseInitStrue.TIM_Period=arr; // Set auto reload load value
TIM_TimeBaseInitStrue.TIM_Prescaler=psc; // The prescaled coefficients
TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up; // The counter overflows up
TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1; // The division factor of the clock , It plays a little delay role , General set to TIM_CKD_DIV1
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStrue); //TIM3 Initialize settings ( Set up PWM The cycle of )
TIM_OCInitStrue.TIM_OCMode=TIM_OCMode_PWM1; // PWM Pattern 1:CNT < CCR Output effective level at
//TIM_OCInitStrue.TIM_OCMode=TIM_OCMode_PWM2;
TIM_OCInitStrue.TIM_OCPolarity=TIM_OCPolarity_High;// Set polarity - The effective level is : High level
TIM_OCInitStrue.TIM_OutputState=TIM_OutputState_Enable;// Output enable
//
//TIM_OC3Init(TIM3,&TIM_OCInitStrue); //TIM3 The passage of 3 PWM Mode setting
//
// TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_OC4Init(TIM3,&TIM_OCInitStrue); //TIM3 The passage of 4 PWM Mode setting
TIM_OC4PreloadConfig(TIM3,TIM_OCPreload_Enable); // Enable preload register
TIM_Cmd(TIM3,ENABLE); // Can make TIM3
}
Be careful :
PWM clock frequency
=72000000/(59999+1)*(23+1) = 50HZ (20ms),
Set upAuto load values
60000,prescale
coefficient 24
边栏推荐
- Vscade set multi line display of tab
- Classifier visual interpretation stylex: Google, MIT, etc. have found the key attributes that affect image classification
- How to use stustr function in Oracle view
- Global and Chinese markets of stainless steel surgical suture 2022-2028: Research Report on technology, participants, trends, market size and share
- TypeScript数组乱序输出
- Bone conduction non ear Bluetooth headset brand, bone conduction Bluetooth headset brand recommendation
- ROW_NUMBER()、RANK()、DENSE_RANK区别
- LeetCode 1. Sum of two numbers
- The light of ideal never dies
- Practice of traffic recording and playback in vivo
猜你喜欢
HMS core machine learning service helps zaful users to shop conveniently
Exploration and practice of integration of streaming and wholesale in jd.com
LeetCode 2. 两数相加
Summary | three coordinate systems in machine vision and their relationships
LeetCode 2. Add two numbers
How to solve the failure of printer driver installation of computer equipment
What is the difference between self attention mechanism and fully connected graph convolution network (GCN)?
Summary of monthly report | list of major events of moonbeam in June
电脑设备打印机驱动安装失败如何解决
头条 | 亚控科技产品入选中纺联《纺织服装行业数字化转型解决方案重点推广名录》
随机推荐
Global and Chinese markets for carbon dioxide laser cutting heads 2022-2028: Research Report on technology, participants, trends, market size and share
Bone conduction non ear Bluetooth headset brand, bone conduction Bluetooth headset brand recommendation
PCL point cloud image transformation
大廠面試總結大全
Data security industry series Salon (III) | data security industry standard system construction theme Salon
Pandora IOT development board learning (RT thread) - Experiment 2 RGB LED experiment (learning notes)
分析超700万个研发需求发现,这8门编程语言才是行业最需要的!
Take you ten days to easily complete the go micro service series (I)
July 1st gift: Yi Jingjie's "hundred day battle" ended perfectly, and the database of Guiyang bank was sealed in advance
[fluent] dart data type string type (string definition | string splicing | string API call)
Global and Chinese market of jacquard looms 2022-2028: Research Report on technology, participants, trends, market size and share
Seal Library - installation and introduction
Mathematical analysis_ Notes_ Chapter 6: Riemann integral of univariate function
LeetCode 3. 无重复字符的最长子串
unity Hub 登录框变得很窄 无法登录
TCP congestion control details | 2 background
Everyone Xinfu builds: a one-stop intelligent business credit service platform
Today in history: Alipay launched barcode payment; The father of time-sharing system was born; The first TV advertisement in the world
历史上的今天:支付宝推出条码支付;分时系统之父诞生;世界上第一支电视广告...
LeetCode 2. Add two numbers