这里所说的客制化PWM指的就是我们可以输出任何想要的方波波形,例如输出10个完整的波後停止输出,或着是输出10个波的循环,而在一个循环内,每个波的工作周期递增(0%、10%、20%...)。我们接下来就来实作看看这两个吧~
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
}
这个函式一样在tim.c档当中以若定义的形式定义过了,我们可以直接复制到main.c档当中重新定义。
完整的程序如下:
/* USER CODE BEGIN 4 */
int pulse = 5;
int count = 0;
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) {
if (++count == pulse) {
count = 0;
HAL_TIM_PWM_Stop_IT(&htim2, TIM_CHANNEL_1);
}
}
/* USER CODE END 4 */
在main当中启动PWM输出
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_1);
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
这是一个经过巧妙设计的中断函式,这里个count要用前置++才可以喔!我们只要更改pulse的值就可以改变输出波的数量。
这里的HAL_TIM_PWM_Stop_IT()可以停止PWM的输出
同样的,我们一开始要启用这个函式但是由於我们是启用中断版本的PWM输出,函式为以下这个
HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
>>: Angular Stock Route Guards (Day31)
tags: 铁人赛 CodeBuild AWS SSM 前言 关於 Developer Tool -...
Find the Difference 题目连结:https://leetcode.com/pro...
昨天(DAY2)做的phpmyadmin出现问题登不进去,不过把错误讯息喂google爬了一圈并没有...
警报疲乏 相信大家都听过「放羊的孩子」的伊索寓言故事。 今天我们探讨的问题是当团队中的警报器常常发生...
事件物件 事件物件很常跟事件处理一起配着使用 浏览器会主动收集和事件有关系的资讯,并制造出 Even...