概述
- 平台:stm32f103c8t6+ stm32cube
- 配置模式:根据手册中外部输入触发单脉冲输出,本例测试配置 TIM2 CH1:单脉冲PWM输出 CH2:外部触发输入通道。TIM3-CH1单脉冲输出,软件触发。
- cubemx配置:PC13输出模式,定时翻转IO电平。将其连接到TIM2_CH2
-
TIM2 从模式:触发模式;触发源TI2FP2。输出通道CH1:PWM 勾选Onepulse,配置pulse=300决定了延迟输出时间tdelay,周期值1000,输出高电平时间700个计数周期。
-
TIM3 配置CH1为单脉冲输出,不设置从模式,到时通过软件触发。如图
-
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();
MX_TIM2_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_OnePulse_Start(&htim2, TIM_CHANNEL_1);
// TIM_CCxChannelCmd(TIM2, TIM_CHANNEL_1, TIM_CCx_ENABLE);
// TIM_CCxChannelCmd(TIM2, TIM_CHANNEL_2, TIM_CCx_ENABLE);
//HAL_TIMEx_OnePulseN_Start(&htim3, TIM_CHANNEL_1);//
//HAL_TIM_OnePulse_Start_IT(&htim3, TIM_CHANNEL_1);
HAL_TIM_OnePulse_Start(&htim3, TIM_CHANNEL_1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(200);
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
__HAL_TIM_ENABLE(&htim3);
}
/* USER CODE END 3 */
}
观察波形,本例中tim2-ch1的tdelay=300us
总结: 基于CUBEMX下的单脉冲输出
硬件触发可以配置触发从模式,选择触发源TIxFPy(只能选用定时器的CH1或 CH2通道),该模式下可用于过零检测+可控硅控制。
软件触发只需要重新使能CEN即可。
程序中需要调用*HAL_TIM_OnePulse_Start(TIM_HandleTypeDef htim, uint32_t OutputChannel) 启动相关输出通道。之后根据配置就会实现软件或硬件触发的单脉冲输出。tdelay 和tpulse见下图说明。改变tdelay 可以通过__HAL_TIM_SET_COMPARE(HANDLE, CHANNEL, COMPARE)赋值改变。
最后
以上就是高贵芝麻为你收集整理的stm32 单脉冲输出 外部触发+软件触发设置测试(基于cubemx的HAL库)的全部内容,希望文章能够帮你解决stm32 单脉冲输出 外部触发+软件触发设置测试(基于cubemx的HAL库)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复