我試圖讓設備接收來自外部傳感器(壓力傳感器)的信號。我在STM32F3Discovery和USB-USART適配器上使用HAL庫,通過串口與計算機進行通信。我發送數據到設備或從設備接收數據,但我需要一些方法來改變定時器預分頻器和自動重新加載值(更改採樣率),我的gui應用程序上有一個按鈕。我怎樣才能做到這一點?我試圖做這樣的事情:stm32動態計時器設置更改
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。
先查看寄存器說明。 –