嵌入式系统课设:基于PWM的直流电机调速课程设计

设计任务:以STM32微控制器为核心,设计一个直流电机调速装置。

利用STM32微控制器的PWM功能,设计一个直流电机闭环调速电路。整体装置采用电池供电,需进行装置各部分供电电路设计,测速方案设计,具有合理的人机控制界面。

首先通过调用定时器 HAL 库函数 HAL_TIM_PWM_Init 初始化 TIM3 并设置 TIM3 的 ARR 和 PSC 等参数,其次通过调用函数 HAL_TIM_PWM_ConfigChannel 设置 TIM3_CH4 的 PWM 模式以及比较值等参数,最后通过调用函数 HAL_TIM_PWM_Start来使能 TIM3 以及使能 PWM 通道TIM3_CH4输出。

主函数如下:

int main(void)

{

    u8 key;

    u16 led0pwmval=0;  

    HAL_Init();                     //初始化HAL库   

    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz

    delay_init(180);                //初始化延时函数

    uart_init(115200);              //初始化USART

    LED_Init();                     //初始化LED

    TIM3_PWM_Init(500-1,90-1);      //90M/90=1M的计数频率,自动重装载为500,那么PWM频率为1M/500=2kHZ

   KEY_Init();                     //初始化按键

    while(1)

    {

key=KEY_Scan(0);  

if(key==KEY0_PRES)             //按键0按下增大占空比

{

  led0pwmval+=50; //dir==1 led0pwmval递增

           {   led0pwmval=300;}

TIM_SetTIM3Compare4(led0pwmval);

}

if(key==KEY1_PRES)           //按键1按下减小占空比

{

  led0pwmval-=50;                     //if(led0pwmval==0)//dir=1; //led0pwmval递减到0后,方向改为递增

 TIM_SetTIM3Compare4(led0pwmval); //修改比较值,修改占空比

}

   }

}

版权声明:本文为CSDN博主「山下有水」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_52941127/article/details/122680543

设计任务:以STM32微控制器为核心,设计一个直流电机调速装置。

利用STM32微控制器的PWM功能,设计一个直流电机闭环调速电路。整体装置采用电池供电,需进行装置各部分供电电路设计,测速方案设计,具有合理的人机控制界面。

首先通过调用定时器 HAL 库函数 HAL_TIM_PWM_Init 初始化 TIM3 并设置 TIM3 的 ARR 和 PSC 等参数,其次通过调用函数 HAL_TIM_PWM_ConfigChannel 设置 TIM3_CH4 的 PWM 模式以及比较值等参数,最后通过调用函数 HAL_TIM_PWM_Start来使能 TIM3 以及使能 PWM 通道TIM3_CH4输出。

主函数如下:

int main(void)

{

    u8 key;

    u16 led0pwmval=0;  

    HAL_Init();                     //初始化HAL库   

    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz

    delay_init(180);                //初始化延时函数

    uart_init(115200);              //初始化USART

    LED_Init();                     //初始化LED

    TIM3_PWM_Init(500-1,90-1);      //90M/90=1M的计数频率,自动重装载为500,那么PWM频率为1M/500=2kHZ

   KEY_Init();                     //初始化按键

    while(1)

    {

key=KEY_Scan(0);  

if(key==KEY0_PRES)             //按键0按下增大占空比

{

  led0pwmval+=50; //dir==1 led0pwmval递增

           {   led0pwmval=300;}

TIM_SetTIM3Compare4(led0pwmval);

}

if(key==KEY1_PRES)           //按键1按下减小占空比

{

  led0pwmval-=50;                     //if(led0pwmval==0)//dir=1; //led0pwmval递减到0后,方向改为递增

 TIM_SetTIM3Compare4(led0pwmval); //修改比较值,修改占空比

}

   }

}

版权声明:本文为CSDN博主「山下有水」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_52941127/article/details/122680543

生成海报
点赞 0

山下有水

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

HAL库中断下降沿解决编码器问题方案

EC11旋转编码器 下降沿中断触发判断正反转问题解决方案 首先上一张旋转编码器的电平逻辑图: 先说一下思路:A引脚我设置了下降沿中断触发,B引脚设置了读输入。当A引脚出现由高电平向低电平转换的现象&

基于STM32F4系列 之 霍尔编码器减速直流电机

文章目录 前言一、关于编码器介绍二、编码器工作原理三、编码器电机配置四、代码配置五、实验工程链接前言 这篇博文为作者实验经历写下的笔记,借鉴学习了多位博主的博文,并总结了互联网资料。本篇使用的是JGB37-520减

STM32硬件CRC的使用

STM32硬件CRC的使用 STM32硬件的CRC不占用MCU的计算资源,和软件查表计算消耗的存储空间。但其结果与平常使用的CRC不一样,导致很多人还是在用软件计算CRC。 其实结果的差别,只是由于计