STM32F103C8+L298N_PWM直流电机调速_第1页
STM32F103C8+L298N_PWM直流电机调速_第2页
STM32F103C8+L298N_PWM直流电机调速_第3页
STM32F103C8+L298N_PWM直流电机调速_第4页
STM32F103C8+L298N_PWM直流电机调速_第5页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(二)硬件说明:控制板:STM32F03C8T6 最小系统;STM32F103C8T骸心板+L298N直流电机调速 PWM调速(一) 功能说明用L298N驱动一台直流减速电机,引脚IN1,IN2可用于PWM控制。仅用STM32的两个端口给出 PWM信号控制IN1,IN2即可实现正反转、加减速等动作。BOOT选择mcurm晶捉控制板说明型号:STM32F103C8T6内核:ARM 32 位的 CortexTM-M3 CPU调试方式:SWD尺寸:22.86mm x 53.34mmSWDiS试摟口主晶騙PCI?指示灯直流电机驱动板:L298N是SGS公司的产品,比较常见的是15脚MulTIwatt封

2、装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。様载5#输出使能马达A輪出I:住B通道使能马达B输出E.输入 电源地 弭輸出可不接 n通道使能一(三)资源配置:STM32F03C8T6使用端口定义端口功能说明配置PA2连接L298N芯片的IN1通用定时器的PWM功能,TIM2_CH3PA3连接L298N芯片的IN2通用定时器的PWM功能,TIM2 CH4P C13控制板带的LED指示灯,周期性的变化, 每变化一次,电机的转运方向变化一次。 由TIM3中断定时控制。通用定时器TIM3定时中断L298N端口定义IN1IN2ENA电机状态PA20始终是

3、1顺时针运转,调整 PA2的频率,可高速。0PA3始终是1逆时针运转,调整 PA2的频率,可高速。00始终是1停止通用定时器TIM3的中断定时实现步骤 使能定时器时钟。(四)软件实现1:RCC_A PB1 Perip hClockCmd(RCC_A PB1 Perip h_TIM3, ENABLE); 初始化定时器,配置【ARR自动装载值,PSC预分频系数。】TIM_TimeBase In it(TIM3, &TIM_TimeBaseStructure); 开启定时器中断,配置 NVIC。TIM_ITCo nfig(TIM3,TIM_IT_ Up date,ENABLE);NVIC_I

4、 nit(&N VIC_I nitStructure); 使能定时器。TIM_Cmd(TIM3, ENABLE); / 实际是配置控制寄存器 1 (TIM3_CR1) 编写中断服务函数。TIMx IRQHa ndler();2 :通用定时器 TIM2的Channel1、Channel2的PWM实现步骤 使能定时器2和相关10 口时钟。使能定时器 2 时钟:RCC_APB1 PeriphClockCmd(RCC_APBIPeriph_TIM2, ENABLE); 使能 GPIOB时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPI0A, ENABLE)

5、; 初始化IO 口为复用功能输出。函数:GPIO_Init();GP IO_I ni tStructure.G PI O_Mode = GPI O_Mode_AF _PP;初始化定时器:ARR,PS(等:TIM_TimeBaselnit(TIM2, &TIM_TimeBaseStructure);初始化输出比较参数:TIM_OC3 In it(TIM2, &TIM_OC In itStructure);TIM_OC4I nit(TIM2, &TIM_OC In itStructure);使能预装载寄存器:TIM_OC2 PreloadCo nfig(TIM2, TIM_

6、OC Preload_E nable);使能定时器。TIM_Cmd();不断改变比较值 CCRx达到不同的占空比效果 :TIM_SetCompare3() ; TIM_SetCompare4();使用Keil5模拟软件的Logic Analyzer功能,PA2, PA3,PC13的波形图如下所示:n負! sIMouw RosTime:'.'ahK:DI忙鑒也鯨1廿弭V«»a25bxD.l59r14ik 0z-QSina I订口;闻11111L > 41hk d! 01RHefijncfl Point25jCn(WJl anvA X A* K ivnaT

7、S xl(五)附录:程序源码1 #i nclude "delay.h"2 #i nclude "sys.h"3 #i nclude "timer.h"44 void GPIO_Config(void) / 配置 PA2, PA35 6 GPIO_lnitTyp eDef GPI O_I nitStructure;87 /* GPIOA clock en able */8 RCC_A PB2 Perip hClockCmd(RCC_A PB2 Peri ph_GPIOA |RCC_A PB2 Periph_GPIO C,ENABLE);

8、 /119 /*GPIOA Con figuratio n: TIM3 cha nnel 1 and 2 as alternate fu nction push-pull */10 GP IO_I ni tStructure.G PIO_Pi n = GPIO_Pin_2 | GPIO_P in_3;11 GPIO_lni tStructure.G PI O_Mode = GP IO_Mode_AF_ PP; / 复用推挽输出12 GP IO_I nitStructure.G PIO_S peed = GP IO_S peed_50MH z;13 GP IO_I nit(G PI OA, &a

9、mp;GP IO_I nitStructure);1714 GP IO_I ni tStructure.G PI O_Pi n = GPIO_P in_13; /LED0-> PC.13端口配置15 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; / 推挽输出16 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO 口速度为 50MHz17 GP IO_I nit(G PIOC, &GPI O_I nitStructure);/根据设定参数初始化 GPIOC.1318 231

10、9 int main( void)20 21 delay_init(); /延时函数初始化22 NVIC_ PriorityGrou pCo nfig(NVIC_ PriorityGroup_2);/设置NVIC中断分组2:2位抢占优先级,2位响应优先级2823 /每隔5s的周期,变换电机的转向。24 /定时中断,最小单位钟频率=72MHz/36KHz=2KHz25 TIM3_ lnt_lni t(9999,35999);3226 GPIO_Config(); /LED,PWM 端口初始化,配置 PC13,PA2,PA327 TIM2_PWM_lnit(47999,2 ); / 分频。最小单位

11、钟频率 =72000000/(2+1)=24Mhz3528 while(1)29 3830 31 1 #i nclude "timer.h"22 /通用定时器3中断初始化3 /这里时钟选择为 APB1的2倍,而APB1为36M4 /arr :自动重装值。5 /psc :时钟预分频数6 /这里使用的是定时器3!87 #defi ne P C13 P Cout(13)/ P C13108 void TIM3_I nt_ln it(u16 arr,u16 psc)9 10 TIM_TimeBaseI nitTyp eDef TIM_TimeBaseStructure;11 NVI

12、C_I ni tTy peDef NVIC_I ni tStructure;1512 RCC_A PB1Perip hClockCmd(RCC_A PB1Perip h_TIM3, ENABLE);时钟使能13 / RCC_A PB2 Perip hClockCmd(RCC_A PB2 Perip h_AFIO ,ENABLE );14 / GPIO_Pin Rema pCo nfig(G PIO_FullRemap_TIM3 ,ENABLE);1915 TIM_TimeBaseStructure.TIM _P eriod = arr;/设置在下一个更新事件装入活动的自动重装载寄存器周期的值计

13、数到5000为500ms16 TIM_TimeBaseStructure.TIM _P rescaler = psc;/设置用来作为TIMx时钟频率除数的预分频值10Khz的计数频率17 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;/设置时钟分割:TDTS = Tck_tim18 TIM_TimeBaseStructure.TIM_Cou nterMode = TIM_Cou nterMode_ Up;/TIM向上计数模式19 TIM_TimeBase In it(TIM3, &TIM_TimeBaseStructure

14、);/根据TIM_TimeBaseInitStruct中指定的参数初始化 TIMx的时间基数单位2520 TIM_ITCo nfig(TIM3,TIM_IT_ Up date,ENABLE );/使能指定的TIM3中断,允许更新中断2721 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; /TIM3 中断22 NVIC_I nitStructure.NVIC_IRQCha nn el Preemp tio nP riority = 0;/先占优先级0级23 NVIC_InitStructure.NVIC_IRQChannelSubPriority

15、 = 3; / 从优先级 3 级24 NVIC_I ni tStructure.NVIC_IRQCha nn elCmd = ENABLE; /IRQ 通道被使能25 NVIC_I nit(&N VIC_I ni tStructure);/根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器3326 TIM_Cmd(TIM3, ENABLE); /使能 TIMx 外设27 28 /定时器3中断服务程序29 void TIM3_IRQHa ndler(void) /TIM3 中断30 31 if (TIM_GetlTStatus(TIM3, TIM_IT_ Up dat

16、e) != RESET)/检查指定的TIM中断发生与否:TIM中断源32 33 TIM_ClearIT Pen di ngBit(TIM3, TIM_IT_U pdate );/清除TIMx的中断待处理位:TIM中断源34 P C13=! PC13;4335 if (P C13 =1)36 37 TIM_SetCo mp are3(TIM2,24000);38 TIM_SetCom pare4(TIM2,0);C:STM32F103C8T6核心板 +L298N_PWM 直流电机调速 HARDWARETIMERtimer.c39 40 else41 42 TIM_SetCom pare3(TIM

17、2,0);43 TIM_SetCo mp are4(TIM2,24000);44 45 46 5647 /TIM2 PWM部分初始化两个 PWM波形,分别控制电机的正转与反转48 /PWM输出初始化49 /arr :自动重装值50 /psc :时钟预分频数51 void TIM2_ PWM_ln it(u16 arr,u16 psc)52 6353 TIM_TimeBaseI nitTyp eDef TIM_TimeBaseStructure;54 TIM_OCI nitTy peDef TIM_OCI nitStructure;6655 RCC_APB1 PeriphClockCmd(RCC

18、_APB1Periph_TIM2, ENABLE);使能定时器 3 时钟6856 II初始化TIM257 TIM_TimeBaseStructure.TIM _P eriod = arr;II设置在下一个更新事件装入活动的自动重装载寄存器周期的值58 TIM_TimeBaseStructure.TIM _P rescaler =psc;II设置用来作为TIMx时钟频率除数的预分频值59 TIM_TimeBaseStructure.TIM_ClockDivision = 0; II 设置时钟分割:TDTS =Tck_tim60 TIM_TimeBaseStructure.TIM_Cou nter

19、Mode = TIM_Cou nterMode_ Up;IITIM向上计数模式61 TIM_TimeBase In it(TIM2, &TIM_TimeBaseStructure);II根据TIM_TimeBaseInitStruct中指定的参数初始化 TIMx的时间基数单位7562 II 初始化 TIM2 Channel1 PWM 模式63 TIM_OCI nitStructure.TIM_OCMode = TIM_OCMode_ PWM1;II选择定时器模式:TIM脉冲宽度调制模式 264 TIM_OCI nitStructure.TIM_Out pu tState = TIM_Out putState_E nable;II比较输出使能65 TIM_OCI ni tStructure.TIM_ Pulse = 13500 ;66 TIM_OCI ni tStructure.TIM_OC Polarity = TIM_OC Polarity_High;II输出极性:TIM输出比较极性高67 TIM_OC3 In it(TIM2, &TIM_OCI nitStructure);II根据T指定的参数初始化外设TIM2 OC468 TIM_OC3 Prel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论