STM32F103C8+L298N_PWM直流电机调速共7页.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《STM32F103C8+L298N_PWM直流电机调速共7页.doc》由会员分享,可在线阅读,更多相关《STM32F103C8+L298N_PWM直流电机调速共7页.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流STM32F103C8+L298N_PWM直流电机调速【精品文档】第 7 页STM32F103C8T6核心板+L298N直流电机调速PWM调速(一) 功能说明 用L298N驱动一台直流减速电机,引脚IN1,IN2可用于PWM控制。仅用STM32的两个端口给出PWM信号控制IN1,IN2即可实现正反转、加减速等动作。(二) 硬件说明:控制板:STM32F03C8T6最小系统;控制板说明型号:STM32F103C8T6内核:ARM 32位的CortexTM-M3 CPU调试方式:SWD尺寸:22.86mm53.34mm直流电机驱动板:L298N是SGS公司的
2、产品,比较常见的是15脚MulTIwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。(三) 资源配置: STM32F03C8T6使用端口定义端口功能说明配置PA2连接L298N芯片的IN1 通用定时器的PWM功能, TIM2_CH3PA3连接L298N芯片的IN2通用定时器的PWM功能,TIM2_CH4PC13控制板带的LED指示灯,周期性的变化,每变化一次,电机的转运方向变化一次。由TIM3中断定时控制。通用定时器TIM3定时中断L298N端口定义 IN1IN2ENA电机状态PA20始终是1顺时针运转,调整PA2的频率,可高速。 0PA
3、3始终是1逆时针运转,调整PA2的频率,可高速。00始终是1停止(四) 软件实现 1:通用定时器TIM3的中断定时实现步骤 使能定时器时钟。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 初始化定时器,配置【ARR自动装载值,PSC预分频系数。】 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 开启定时器中断,配置NVIC。TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); NVIC_Init(&NVIC_InitStructure); 使能定时器。TIM_C
4、md(TIM3, ENABLE); /实际是配置 控制寄存器1 (TIM3_CR1) 编写中断服务函数。TIMx IRQHandler();2:通用定时器TIM2的Channel1、Channel2的PWM实现步骤 使能定时器2和相关IO口时钟。使能定时器2时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);使能GPIOB时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 初始化IO口为复用功能输出。函数:GPIO_Init();GPIO_InitStructure.GPIO
5、_Mode = GPIO_Mode_AF_PP; 初始化定时器:ARR,PSC等:TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); 初始化输出比较参数:TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_OC4Init(TIM2, &TIM_OCInitStructure); 使能预装载寄存器: TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); 使能定时器。TIM_Cmd(); 不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare3() ;
6、 TIM_SetCompare4() ; 使用Keil5 模拟软件的Logic Analyzer功能,PA2,PA3,PC13的波形图如下所示:(五) 附录:程序源码1 #include delay.h2 #include sys.h3 #include timer.h45 void GPIO_Config(void) /配置PA2, PA36 7 GPIO_InitTypeDef GPIO_InitStructure;89 /* GPIOA clock enable */10 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Perip
7、h_GPIOC,ENABLE); /1112 /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate functionpush-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_InitStr
8、ucture);1718 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; /LED0-PC.13端口配置19 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出20 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /IO口速度为50MHz21 GPIO_Init(GPIOC, &GPIO_InitStructure);/根据设定参数初始化GPIOC.1322 2324 int main(void)25 26 delay_init(); /延时函数初
9、始化27 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/设置NVIC中断分组2:2位抢占优先级,2位响应优先级2829 /每隔5s的周期,变换电机的转向。30 /定时中断,最小单位钟频率=72MHz/36KHz=2KHz31 TIM3_Int_Init(9999,35999) ;3233 GPIO_Config(); /LED,PWM端口初始化,配置PC13,PA2,PA334 TIM2_PWM_Init(47999,2 ); /分频。最小单位钟频率=72000000/(2+1)=24Mhz3536 while(1)37 3839 40 1 #
10、include timer.h23 /通用定时器3中断初始化4 /这里时钟选择为APB1的2倍,而APB1为36M5 /arr:自动重装值。6 /psc:时钟预分频数7 /这里使用的是定时器3!89 #define PC13 PCout(13)/ PC131011 void TIM3_Int_Init(u16 arr,u16 psc)12 13 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;14 NVIC_InitTypeDef NVIC_InitStructure;1516 RCC_APB1PeriphClockCmd(RCC_APB1Perip
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32F103C8 L298N_PWM 直流电机 调速
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内