当前位置:网站首页>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
边栏推荐
- Where can I open computer administrator permissions
- Text intelligent expansion and contraction control of swiftui text component (tutorial includes source code)
- How to solve the failure of printer driver installation of computer equipment
- Global and Chinese markets of stainless steel surgical suture 2022-2028: Research Report on technology, participants, trends, market size and share
- Yyds dry inventory uses thread safe two-way linked list to realize simple LRU cache simulation
- The login box of unity hub becomes too narrow to log in
- ⌈ 2022 ⌋ how to use webp gracefully in projects
- Yyds dry goods inventory # look up at the sky | talk about the way and principle of capturing packets on the mobile terminal and how to prevent mitm
- 自注意力机制和全连接的图卷积网络(GCN)有什么区别联系?
- [Yu Yue education] reference materials of sensing and intelligent control technology of Nanjing University of Technology
猜你喜欢
Ranger (I) preliminary perception
Vscade set multi line display of tab
隐私计算技术创新及产业实践研讨会:学习
台积电全球员工薪酬中位数约46万,CEO约899万;苹果上调日本的 iPhone 售价 ;Vim 9.0 发布|极客头条...
2022 the latest and most detailed will successfully set the background image in vscade and solve unsupported problems at the same time
Text intelligent expansion and contraction control of swiftui text component (tutorial includes source code)
数据安全产业系列沙龙(三)| 数据安全产业标准体系建设主题沙龙
Exploration and practice of integration of streaming and wholesale in jd.com
unity Hub 登录框变得很窄 无法登录
月报总结|Moonbeam6月份大事一览
随机推荐
路由模式:hash和history模式
电脑管理员权限在哪里可以打开
机器学习-感知机模型
mysql min() 求某条件下最小的值出现多个结果
[fluent] dart data type number type (DART file creation | num type | int type | double type | num related API)
Practice of traffic recording and playback in vivo
历史上的今天:支付宝推出条码支付;分时系统之父诞生;世界上第一支电视广告...
Win11应用商店无法加载页面怎么办?Win11商店无法加载页面
Sim2real environment configuration tutorial
Thinking about absolute truth and relative truth
只是巧合?苹果iOS16的神秘技术竟然与中国企业5年前产品一致!
How to solve the failure of printer driver installation of computer equipment
SQL solves the problem of continuous login deformation holiday filtering
pwm呼吸灯
Résumé de l'entrevue de Dachang Daquan
Interview summary of large factories
七一献礼:易鲸捷 “百日会战”完美收官 贵阳银行数据库提前封板
外企高管、连续创业者、瑜伽和滑雪高手,持续迭代重构的程序人生
Cloud native cicd framework: Tekton
MySQL port