STM32 | PWM脉冲宽度调制(第五天按键中断,控制电机正/反转、加速、减速、暂停与继续源码解析)

STM32 | PWM脉冲宽度调制(第五天)
STM32 | PWM脉冲宽度调制(第五天呼吸灯源码解析)
STM32 | PWM脉冲宽度调制(第五天电机速度控制源码解析)

PWM 技术在以下其他机器学习领域和应用中也可以发挥作用:

  • 自然语言处理 (NLP):调节文本生成模型(例如 GPT-3)的输出长度和多样性。

  • 强化学习:控制代理在环境中采取行动的频率和持续时间。

  • 时间序列预测:调节模型预测未来事件的时间间隔。

  • 异常检测:设置阈值来检测超出正常范围的数据点。

  • 优化:控制超参数调整算法的探索和利用阶段之间的平衡。

具体应用示例:

  • **音乐生成:**使用 PWM 来控制生成的音乐片段的长度和复杂度。

  • **机器人控制:**调节机器人的动作速度和持续时间,以实现平稳和高效的运动。

  • **医疗诊断:**使用 PWM 来优化诊断算法的灵敏度和特异性。

  • **金融预测:**控制模型预测股票价格或汇率的时间间隔。

  • **自动驾驶:**调节自动驾驶汽车在不同交通状况下的决策频率。

PWM 技术的通用性使其成为机器学习中调节模型行为和提高性能的宝贵工具。

1、使用按键中断,控制电机正/反转、加速、减速、暂停与继续。

PA2 与 PA3

【led.h】

#ifndef __LED_H#define __LED_H#include "stm32f4xx.h"#define LED0_ON    GPIO_ResetBits(GPIOF, GPIO_Pin_9)#define LED0_OFF  GPIO_SetBits(GPIOF, GPIO_Pin_9)void Led_Init(void);#endif

【led.c】

#include "led.h"/*********************************引脚说明:LED0 -- PF9LED1 -- PF10LED2 -- PE13LED3 -- PE14**********************************/void Led_Init(void){
    GPIO_InitTypeDef  GPIO_InitStruct;  //使能GPIOE组时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);      //使能GPIOF组时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);    GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_9|GPIO_Pin_10;    //引脚9 10  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;  //输出模式  GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;  //推挽输出  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;    //上拉  GPIO_InitStruct.GPIO_Speed  = GPIO_Speed_50MHz; //速度   GPIO_Init(GPIOF, &GPIO_InitStruct);  GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_13|GPIO_Pin_14;    //引脚13 14  GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;  //输出模式  GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;  //推挽输出  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;    //上拉  GPIO_InitStruct.GPIO_Speed  = GPIO_Speed_50MHz; //速度   GPIO_Init(GPIOE, &GPIO_InitStruct);    GPIO_SetBits(GPIOF, GPIO_Pin_9);  GPIO_SetBits(GPIOF, GPIO_Pin_10);  GPIO_SetBits(GPIOE, GPIO_Pin_13);  GPIO_SetBits(GPIOE, GPIO_Pin_14);}

【delay.h】

#ifndef __DELAY_H#define __DELAY_H#include "stm32f4xx.h"void Delay_Init(void);void delay_us(u32 nus);void delay_ms(u32 nms);#endif

【delay.c】

#include "delay.h"//u32 == unsigned intu32 my_us = 21;        //计21个数用1usu32 my_ms = 21000;      //计21000个数用1msvoid Delay_Init(void){
    //SysTick时钟配置 168MHZ/8 = 21MHZ  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);}//nus取值范围:1~798 915void delay_us(u32 nus){
    u32 temp = 0;  //设置重装值寄存器  SysTick->LOAD = my_us*nus - 1;  //设置计数器的值为0  SysTick-

相关推荐

  1. STM32 | PWM脉冲宽度调制

    2024-03-31 06:22:03       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 06:22:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 06:22:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 06:22:03       4 阅读
  4. Python语言-面向对象

    2024-03-31 06:22:03       5 阅读

热门阅读

  1. 简单图论的知识

    2024-03-31 06:22:03       19 阅读
  2. Docker 搭建 Blockbridge

    2024-03-31 06:22:03       25 阅读
  3. 【软考】防火墙技术

    2024-03-31 06:22:03       19 阅读
  4. 【阅读笔记】《克拉克森的农场》

    2024-03-31 06:22:03       20 阅读
  5. Linux下使用vim文本编辑器

    2024-03-31 06:22:03       19 阅读
  6. ChatGPT指引:借助ChatGPT撰写学术论文的技巧

    2024-03-31 06:22:03       21 阅读
  7. ajax的优缺点有哪些?

    2024-03-31 06:22:03       21 阅读
  8. ssh连接

    2024-03-31 06:22:03       17 阅读