一、TIM2和TIM3配置,基于STM32CubeMX

HCLK主时钟配置成72MHz

二、8路PWM初始化配置,50Hz PWM输出

注意:添加启动命令

/* TIM2 init function */
void MX_TIM2_Init(void)
{TIM_ClockConfigTypeDef sClockSourceConfig = {0};TIM_MasterConfigTypeDef sMasterConfig = {0};TIM_OC_InitTypeDef sConfigOC = {0};htim2.Instance = TIM2;htim2.Init.Prescaler = 71;htim2.Init.CounterMode = TIM_COUNTERMODE_UP;htim2.Init.Period = 19999;htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;if (HAL_TIM_Base_Init(&htim2) != HAL_OK){Error_Handler();}sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK){Error_Handler();}if (HAL_TIM_PWM_Init(&htim2) != HAL_OK){Error_Handler();}sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK){Error_Handler();}sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = 100;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK){Error_Handler();}if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK){Error_Handler();}if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK){Error_Handler();}if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK){Error_Handler();}HAL_TIM_Base_Start(&htim2);HAL_TIM_MspPostInit(&htim2);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);}

三、实际波形图

创建了一个Task,用于调节PWM duty。

/* USER CODE BEGIN 1 */
void ServoTask(void *pvParameters)
{static uint8_t Flag = 0;static uint16_t DutyCycle = 0;for(;;){if(DutyCycle < 500){DutyCycle += 1;}else{if(Flag == 0){if(DutyCycle < 2250){DutyCycle += 1;}else{Flag = 1;}}else{if(DutyCycle > 750){DutyCycle -= 1;}else{Flag = 0;}}}__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, DutyCycle);vTaskDelay(1/portTICK_RATE_MS);    //osDelay(1000/portTICK_RATE_MS)}
}

四、运行效果

参考代码:PwmTest.rar-嵌入式文档类资源-CSDN文库

FreeRTOS基础(二):STM32G4系列运行FreeRTOS驱动8路PWM波控制多个路舵机相关推荐

  1. STM32G4系列通过SPI配置DRV8353S驱动芯片

    STM32G4系列通过SPI配置DRV8353S驱动芯片 STM32G4系列通过SPI配置DRV8353S驱动芯片 DRV8353S电机驱动芯片基本介绍 一.硬件分析 1.电源部分 2.pwm驱动部分 ...

  2. 掌上实验室V8系列教程(四)定时器PWM输出

    1 项目功能 三色RGB LED 通过PWM 调色 2 电路原理 我们可以通过3路PWM波分别调整RGB三个二极管的亮度,即调整RGB的比例,合成不同的颜色. PWM,英文名Pulse Width M ...

  3. [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...

  4. FreeRTOS信号量---二值信号量

    信号量可以用来进行资源管理和任务同步,FreeRTOS中信号量又分为二值信号量.计算型信号量.互斥信号量和递归互斥信号量. 0x01 二值信号量 二值信号量其实就是一个只有一个队列项的队列,这个特殊的 ...

  5. IMX6ULL裸机启动,IMX6ULL运行freeRtos

    IMX6ULL裸机启动,IMX6ULL运行freeRtos 裸机启动部分 imx6ull中根据运行代码位置的不同RAM/flash/SD卡,上电会先运行片上ROM中的代码,搬运的数据大小是不同的,代码 ...

  6. C#基础知识梳理系列二:C#的演绎大师:类型

    C#基础知识梳理系列二:C#的演绎大师:类型 摘 要 如果说C#是CLR特邀演员阵容之一,那类型class绝对是C#的演绎/演艺大师.不朽灵魂!它不仅演绎了C#的豪放,也演艺了C#的柔美.时而恢弘.时 ...

  7. Renode应用:在RISC-V核上运行FreeRTOS

    本篇记录通过Renode在RISC-V核上运行FreeRTOS demo的情况.本来不准备写这一篇,但是发现近期工作学习密度实在太大,上周工作的中间结果这周竟然完全想不起来了,不得不又花了一些时间从头 ...

  8. 【arduino】在Arduino上运行FreeRTOS操作系统,freeRTOS入门教程helloword

    关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 我们从一开始接触Arduino编程就知道,Arduino程序结构由setup()和loop()两部分组成,我们需要反复执 ...

  9. Arduino运行FreeRTOS操作系统

    我们从一开始接触Arduino编程就知道,Arduino程序结构由setup()和loop()两部分组成,我们需要反复执行的代码要放在loop()中,并且这些代码一般都是顺序执行的. 随着我们需要实现 ...

最新文章

  1. OpenCV4中的非典型深度学习模型
  2. LayoutInflater的inflate函数用法详解
  3. C++智能指针详解【C++智能指针】
  4. 全球及中国USB分路器行业发展布局与应用现状调研报告2022年
  5. react state成员
  6. Chapter 1. Introduce
  7. android 继承listview,Android listView 继承ListActivity的用法
  8. Arduino文档阅读笔记-WeMos D1 ESP8266 WIFI开发板入门
  9. python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
  10. 如何自学python知乎-初次接触python,怎么样系统的自学呢?
  11. 常见SMTP发送失败原因列表
  12. [个人笔记]C# 基础语法
  13. linux启动mysql失败,Fatal error: Can‘t open and lock privilege tables: Table ‘mysql.host‘ doesn‘t exist
  14. CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制
  15. 计算机视觉外语论文翻译,图像处理-毕设论文外文翻译(翻译+原文)
  16. WXS脚本之WXS语法
  17. p10单元板c语言程序,[原创]P10单元板驱动程序
  18. 小傻蛋的妹妹跟随小甲鱼学习Python的第十六节016
  19. Java坦克大战 (七) 之图片版
  20. 《UnityShader入门精要》总结(1)理论篇

热门文章

  1. php调用c++程序
  2. Uber:Java中的不稳定单元测试处理
  3. w ndows7无法正常启动,如何修复Win7系统:Win7不能正常启动怎么办
  4. 三本计算机大学毕业论文范文,三本本科毕业论文好过吗_大学生千万别抄袭毕业论文_本科毕业答辩容易过吗...
  5. c语言求泡点温度,化工0801-0803班C语言课程设计任务书.doc
  6. 远程终端 android,基于Android的远程家电控制终端设计
  7. 华为研发投入超越微软、苹果、英特尔,2018年研发投入1015亿
  8. 从金蝶云星空到管易云通过接口配置打通数据
  9. 新零售解读:新零售三年,有哪些公司成功转型升级?
  10. 华清远见fs4412开发板学习笔记(五)