本文主要是介绍STM32G030F6使用CubeMx配置PWM实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 使用 CubeMx 创建 PWM 工程
-
打开 CubeMx 软件,选中我们此次使用的单片机型号 STM32G030F6P6 ,点击 StartProject.
-
配置定时器
配置定时器1的通道1和通道2 产生PWM;
设置定时器1的主频:设置了( 63 + 1) 分频即定时器主频为1M
设置PWM定时的周期计数为 1000 即 1000HZ
设置通道一 翻转的计数值为 500 即占空比为 50%
设置通道二 翻转的计数值为 200 即占空比为 20%
-
配置时钟
使用内部高速时钟,将主频倍频到64MHZ -
配置工程相关选项
-
配置完成后点击右上角 GENERATE CODE完成工程的创建
2. 编程
定时器的初始化函数都已经由CubeMx生成,我们仅需要打开 PWM的使能即可
/*** @brief The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM1_Init();/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //1000HZ 50%占空比的PWMHAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); //1000HZ 20%占空比的PWM/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
可以使用一下函数修改PWM的占空比
// 使用此宏定义修改占空比
__HAL_TIM_SetCompare(__HANDLE__, __CHANNEL__, __COMPARE__)
例如:
// 将定时器1的通道1 翻转计数修改为 800,在我们的例程上正好就是800/1000 即 80% 的占空比
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,800);
3. 实验现象
编译并将工程下载到开发板后,使用示波器或者逻辑分析器查看 PA8 和 PB3 引脚是否输出 1000HZ 且占空比分别为 50% 和 20% 的方波。
这篇关于STM32G030F6使用CubeMx配置PWM实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!