Ich versuche, ein Gerät zu machen, das Signal von externen Sensor (Drucksensor) zu empfangen. Ich benutze HAL Bibliotheken auf STM32F3Discovery und USB - USART Adapter, um mit dem Computer über die serielle Schnittstelle zu kommunizieren. Ich sende und empfange Daten zum/vom Gerät, aber ich brauche eine Möglichkeit, den Timer-Prescaler- und Autoreload-Wert zu ändern (um eine Abtastrate zu ändern) mit einem Knopf auf meiner GUI-Anwendung. Wie kann ich das machen? Ich habe versucht, etwas in der Art:stm32 dynamische Timer-Einstellungen ändern
void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart) {
if (Recived == 0) {
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_11);
TIM7->PSC = 119;
TIM7->ARR = 5999;
}
Aber es hat offensichtlich nicht funktioniert: D Hilfe.
EDIT:
Ich denke, im etwas falsch mit Syntax zu tun, führen zunächst initialisieren ich tim7 wie folgt aus:
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();
}
}
Und dann Im Versuch tim7 in meinem Haupt-Funktion wie diese
reconfigvoid 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;
}
}
Ich bin sicher, dass im Senden von Daten und erhalten es auf uC, wegen der LEDs.
Überprüfen Sie zuerst die Registerbeschreibung. –