FreeRTOS基础(二):STM32G4系列运行FreeRTOS驱动8路PWM波控制多个路舵机
一、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波控制多个路舵机相关推荐
- STM32G4系列通过SPI配置DRV8353S驱动芯片
STM32G4系列通过SPI配置DRV8353S驱动芯片 STM32G4系列通过SPI配置DRV8353S驱动芯片 DRV8353S电机驱动芯片基本介绍 一.硬件分析 1.电源部分 2.pwm驱动部分 ...
- 掌上实验室V8系列教程(四)定时器PWM输出
1 项目功能 三色RGB LED 通过PWM 调色 2 电路原理 我们可以通过3路PWM波分别调整RGB三个二极管的亮度,即调整RGB的比例,合成不同的颜色. PWM,英文名Pulse Width M ...
- [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...
- FreeRTOS信号量---二值信号量
信号量可以用来进行资源管理和任务同步,FreeRTOS中信号量又分为二值信号量.计算型信号量.互斥信号量和递归互斥信号量. 0x01 二值信号量 二值信号量其实就是一个只有一个队列项的队列,这个特殊的 ...
- IMX6ULL裸机启动,IMX6ULL运行freeRtos
IMX6ULL裸机启动,IMX6ULL运行freeRtos 裸机启动部分 imx6ull中根据运行代码位置的不同RAM/flash/SD卡,上电会先运行片上ROM中的代码,搬运的数据大小是不同的,代码 ...
- C#基础知识梳理系列二:C#的演绎大师:类型
C#基础知识梳理系列二:C#的演绎大师:类型 摘 要 如果说C#是CLR特邀演员阵容之一,那类型class绝对是C#的演绎/演艺大师.不朽灵魂!它不仅演绎了C#的豪放,也演艺了C#的柔美.时而恢弘.时 ...
- Renode应用:在RISC-V核上运行FreeRTOS
本篇记录通过Renode在RISC-V核上运行FreeRTOS demo的情况.本来不准备写这一篇,但是发现近期工作学习密度实在太大,上周工作的中间结果这周竟然完全想不起来了,不得不又花了一些时间从头 ...
- 【arduino】在Arduino上运行FreeRTOS操作系统,freeRTOS入门教程helloword
关注.星标公众号,不错过精彩内容 编辑:Tony 来源:公众号TonyCode 我们从一开始接触Arduino编程就知道,Arduino程序结构由setup()和loop()两部分组成,我们需要反复执 ...
- Arduino运行FreeRTOS操作系统
我们从一开始接触Arduino编程就知道,Arduino程序结构由setup()和loop()两部分组成,我们需要反复执行的代码要放在loop()中,并且这些代码一般都是顺序执行的. 随着我们需要实现 ...
最新文章
- OpenCV4中的非典型深度学习模型
- LayoutInflater的inflate函数用法详解
- C++智能指针详解【C++智能指针】
- 全球及中国USB分路器行业发展布局与应用现状调研报告2022年
- react state成员
- Chapter 1. Introduce
- android 继承listview,Android listView 继承ListActivity的用法
- Arduino文档阅读笔记-WeMos D1 ESP8266 WIFI开发板入门
- python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
- 如何自学python知乎-初次接触python,怎么样系统的自学呢?
- 常见SMTP发送失败原因列表
- [个人笔记]C# 基础语法
- linux启动mysql失败,Fatal error: Can‘t open and lock privilege tables: Table ‘mysql.host‘ doesn‘t exist
- CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制
- 计算机视觉外语论文翻译,图像处理-毕设论文外文翻译(翻译+原文)
- WXS脚本之WXS语法
- p10单元板c语言程序,[原创]P10单元板驱动程序
- 小傻蛋的妹妹跟随小甲鱼学习Python的第十六节016
- Java坦克大战 (七) 之图片版
- 《UnityShader入门精要》总结(1)理论篇
热门文章
- php调用c++程序
- Uber:Java中的不稳定单元测试处理
- w ndows7无法正常启动,如何修复Win7系统:Win7不能正常启动怎么办
- 三本计算机大学毕业论文范文,三本本科毕业论文好过吗_大学生千万别抄袭毕业论文_本科毕业答辩容易过吗...
- c语言求泡点温度,化工0801-0803班C语言课程设计任务书.doc
- 远程终端 android,基于Android的远程家电控制终端设计
- 华为研发投入超越微软、苹果、英特尔,2018年研发投入1015亿
- 从金蝶云星空到管易云通过接口配置打通数据
- 新零售解读:新零售三年,有哪些公司成功转型升级?
- 华清远见fs4412开发板学习笔记(五)