gpt4 book ai didi

timer - stm32动态定时器设置改变

转载 作者:行者123 更新时间:2023-12-05 07:42:49 25 4
gpt4 key购买 nike

我正在尝试制作一个设备来接收来自外部传感器(压力传感器)的信号。我在 STM32F3Discovery 和 USB - USART 适配器上使用 HAL 库通过串行端口与计算机通信。我正在向设备发送数据或从设备接收数据,但我需要一些方法来通过我的 gui 应用程序上的按钮更改定时器预分频器和自动重载值(以更改采样率)。我怎样才能做到这一点?我正在尝试做类似的事情:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart) {
if (Recived == 0) {

HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_11);
TIM7->PSC = 119;
TIM7->ARR = 5999;

}

但显然没有用 :D 求助。

编辑:

我认为我在语法上做错了,因为首先我像这样初始化 tim7:

static void MX_TIM7_Init(void)
{

TIM_MasterConfigTypeDef sMasterConfig;

htim7.Instance = TIM7;
htim7.Init.Prescaler = 9999;
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
htim7.Init.Period = 719;
if (HAL_TIM_Base_Init(&htim7) != HAL_OK)
{
Error_Handler();
}

sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) !=
HAL_OK)
{
Error_Handler();
}
}

然后我尝试像这样在我的主要功能中重新配置 tim7

void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart) {
if (Recived == 0) {

HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_11);
TIM7->PSC = 119;
TIM7->ARR = 5999;
TIM7->EGR = TIM_EGR_UG;

}
MX_TIM7_Init();
if(Recived == 1){

HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_12);
TIM7->PSC = 9999;
TIM7->ARR = 719;
TIM7->EGR = TIM_EGR_UG;

}
}

我确定我在 uC 上发送和接收数据,因为 LED。

最佳答案

它绝对有效。您可以通过引发 UG 事件重新加载影子 PSC 寄存器。

关于timer - stm32动态定时器设置改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com