嵌入式系统课设:基于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

山下有水

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

暂无评论

发表评论

相关推荐

ESP8266与PCA9685通信I2C

ESP8266与PCA9685通信I2C Talk is cheap, show you code! /*** ESP8266与PCA9685通过I2C协议通信* 功能:控制PCA9685上的16个舵机旋转0-18

stm32——4、中断exti

这里是基于正点原子开发板的学习记录。 首先你要加入固件库 stm32f10x_exti.h 和 stm32f10x_exti.c 1、STM32中每个io口都可以作为外部中断的中断输入口。 2、STM32F103的中断控制器支持19个外部中断/