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

山下有水

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

暂无评论

发表评论

相关推荐

串口不定长接收

一、保留接收区和开启接收的语句    uint8_t buffer[5];HAL_UART_Transmit_IT(&huart1,buffer,3); 二、写入开启空闲中断的语句    __HAL_UART_ENABLE_IT(&huart

基于STM32单片机的电子密码锁设计

一.硬件方案 本设计采用STM32F103C8T6单片机作为主控芯片,结合外围的矩阵按键输入、LCD1602液晶显示、报警、开锁等电路模块实现开锁、上锁、报警、密码更改等功能,设计了一款可以多次修改密码并且具有报警