STM32F103C8+L298N_PWM直流电机调速教学教材

上传人:cn****1 文档编号:508338334 上传时间:2023-04-16 格式:DOCX 页数:7 大小:161.44KB
返回 下载 相关 举报
STM32F103C8+L298N_PWM直流电机调速教学教材_第1页
第1页 / 共7页
STM32F103C8+L298N_PWM直流电机调速教学教材_第2页
第2页 / 共7页
STM32F103C8+L298N_PWM直流电机调速教学教材_第3页
第3页 / 共7页
STM32F103C8+L298N_PWM直流电机调速教学教材_第4页
第4页 / 共7页
STM32F103C8+L298N_PWM直流电机调速教学教材_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《STM32F103C8+L298N_PWM直流电机调速教学教材》由会员分享,可在线阅读,更多相关《STM32F103C8+L298N_PWM直流电机调速教学教材(7页珍藏版)》请在金锄头文库上搜索。

1、资料收集于网络,如有侵权请联系网站删除STM32F103C8T骇心板+L298N直流电机调速PWM调速(一)功能说明用L298N驱动一台直流减速电机,弓|脚IN1,IN2可用于PWM控制。仅用STM32的两个端口给出PWM信号控制IN1,IN2即可实现正反转、加减速等动作。(二)硬件说明:控制板:STM32F03C8T6最小系统;BOOT送择MieiUS囱接口晶振PC13指示灯控制板说明型号:STM32F103C8T6内核:ARM32位的CortexTM-M3CPU调试方式:SWD尺寸:22.86mmx53.34mm直流电机驱动板:L298N是SG铃司的产品,比较常见的是15脚MulTIwat

2、t封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。(三)资源配置:STM32F03C8T6使用端口定义端口功能说明配置PA2连接L298N芯片的IN1通用定日器的PWM功能,TIM2_CH3PA3连接L298N芯片的IN2通用定日器的PWM功能,TIM2_CH4PC13控制板带的LED指示灯,周期性的变化,每变化一次,电机的转运方向变化一次。由TIM3中断定时控制。通用定时器TIM3定时中断L298N端口定义IN1IN2ENA电机状态PA20始终是1顺时针运转,调整PA2的频率,可高速。0PA3始终是1逆时针运转,调整PA2的频率,可高速。:0

3、0始终是1停止(四)软件实现1:通用定时器TIM3的中断定时实现步骤使能定时器时钟。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);初始化定时器,配置【ARR自动装载值,PSC预分频系数。】TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);开启定时器中断,配置NVIC。TIM_ITCon的(TIM3,TIM_IT_Update,ENABLE);NVIC_Init(&NVIC_InitStructure);使能定时器。TIM_Cmd(TIM3,ENABLE);实际是配置控制寄存器1(TIM3_CR1)

4、编写中断服务函数。TIMxIRQHandler();2:通用定时器TIM2的Channell、Channel2的PWM实现步骤使能定时器2和相关IO口时钟。使能定时器2时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);使能GPIOB时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);初始化IO口为复用功能输出。函数:GPIO_Init();GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;初始化定时器:ARR,PS考:TIM_TimeBas

5、eInit(TIM2,&TIM_TimeBaseStructure);初始化输出比较参数:TIM_OC3Init(TIM2,&TIM_OCInitStructure);TIM_OC4Init(TIM2,&TIM_OCInitStructure);使能预装载寄存器:TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable); 使能定时器。TIM_Cmd(); 不断改变比较值CCRx达到不同的占空比效果:TIM_SetCompare3();TIM_SetCompare4();使用Keil5模拟软件的LogicAnalyzer功能,PA2,PA3,PC13的波形图

6、如下所示:(五)附录:程序源码1 #includedelay.h2 #includesys.h3 #includetimer.h45 voidGPIO_Config(void)配置PA2,PA36 7 GPIO_InitTypeDefGPIO_InitStructure;89 /*GPIOAclockenable*/10 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);1112 /*GPIOAConfiguration:TIM3channel1and2asalternatefunctionpush

7、-pull*/13 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;14 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;复用推挽输出15 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;16 GPIO_Init(GPIOA,&GPIO_InitStructure);1718 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;LED0-PC.13端口配置19 GPIO_InitStructure.GPIO_Mode=GPIO_

8、Mode_Out_PP;推挽输出20 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/IO口速度为50MHz21 GPIO_Init(GPIOC,&GPIO_InitStructure);/根据设定参数初始化GPIOC.1322 2324 intmain(void)25 26 delay_init();/延时函数初始化27 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/设置NVIC中断分组2:2位抢占优先级,2位响应优先级28资料收集于网络,如有侵权请联系网站删除29/每隔5s的周期,变换电机的转

9、向。30/定时中断,最小单位钟频率=72MHz/36KHz=2KHz31TIM3_Int_Init(9999,35999);3233GPIO_Config();/LED,PWM端口初始化,配置PC13,PA2,PA334TIM2_PWM_Init(47999,2);/分频。最小单位钟频率=72000000/(2+1)=24Mhz3536while(1)373839401 #includetimer.h23 /通用定时器3中断初始化4 /这里时钟选择为APB1的2倍,而APB1为36M5 /arr:自动重装值。6 /psc:时钟预分频数7 /这里使用的是定时器3!89 #definePC13PC

10、out(13)/PC131011 voidTIM3_Int_Init(u16arr,u16psc)12 13 TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;14 NVIC_InitTypeDefNVIC_InitStructure;1516 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);时钟使能17 /RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);18 /GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENA

11、BLE);1920 TIM_TimeBaseStructure.TIM_Period=arr;/设置在下一个更新事件装入活动的自动重装载寄存器周期的值计数到5000为500ms21 TIM_TimeBaseStructure.TIM_Prescaler=psc;22 设置用来作为TIMx时钟频率除数的预分频值10Khz的计数频率23 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;/设置时钟分割:TDTS=Tck_tim23TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

12、/TIM向上计数模式24TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);/根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位2526TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);/使能指定的TIM3中断,允许更新中断2728NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;/TIM3中断29NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;/先占优先级0级30NVIC_InitSt

13、ructure.NVIC_IRQChannelSubPriority=3;/从优先级3级31NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/IRQ通道被使能32NVIC_Init(&NVIC_InitStructure);根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器3334TIM_Cmd(TIM3,ENABLE);/使能TIMx外设3536/定时器3中断服务程序37voidTIM3_IRQHandler(void)/TIM3中断3839if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET

14、)/检查指定的TIM中断发生与否:TIM中断源4041TIM_ClearITPendingBit(TIM3,TIM_IT_Update);/清除TIMx的中断待处理位:TIM中断源42PC13=!PC13;4344if(PC13=1)4546TIM_SetCompare3(TIM2,24000);47TIM_SetCompare4(TIM2,0);C:STM32F103C8T6核心板+L298N_PWM直流电机调速HARDWARETIMERtimer.c4849else5051TIM_SetCompare3(TIM2,0);52TIM_SetCompare4(TIM2,24000);5354555657/TIM2PWM部分初始化两个PWM波形,分别控制电机的正转与反转58/PWM输出初始化59/arr:自动重装值60/psc:时钟预分频数61voidTIM2_PWM_Init(u16arr,u16psc)626364TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;65TIM_OCInitTypeDefTIM_OCInitStructure;6667RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);便能定时器3时钟6869/初始化TIM270 TIM_TimeBaseStr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号