目錄
1 定時器使用
1.1 CubeMX 配置
1.1.1 創建工程
1.1.2 時鐘配置
1.1.3 定時器配置
1.1.4 GPIO 配置
1.1.5?工程管理
1.2 keil5 配置
1.2.1 添加代碼
1.2.2 修改配置
1.2.3 下載程序
2 PWM使用
2.1 CubeMX 配置
2.1.1 PWM 配置
2.1.2 周期\頻率計算方法
2.2 keil5 配置
2.2.1 添加代碼
本文主要記錄使用CubeMx配置STM32H750ZB 定時器配置過程,以及使用PWM功能。
STM32F1\F4 基本是一致的。
1 定時器使用
1.1 CubeMX 配置
1.1.1 創建工程
選擇型號,開始工程
1.1.2 時鐘配置
這里想要配置 STM32H750ZBT6最高頻率,想要選擇 Power Regulator Voltage Scale 0,之后還需要支持 rev.V(可以去網上查查為什么)
1.1.3 定時器配置
參數簡介:
- Prescaler(預分頻系數):即PSC寄存器值
- Counter Mode (計數方向): 向上計數
- Counter Period (計數周期): 即ARR寄存器值,多少個計數脈沖作為1個波形周期
- auto-reload preload (自動重載值的預裝載): 當改變周期值ARR時,是否等到下一個更新事件再寫入數值,使得數值的更改不影響執行中的波形
TIM2 對應總線:查找時鐘:
頻率計算公式:
根據圖上配置,可以知道當前頻率為:
1.1.4 GPIO 配置
PG0 引腳
1.1.5?工程管理
這里工程名字我就不改了
1.2 keil5 配置
1.2.1 添加代碼
串口打印代碼可以參考?STM32F1\F4\H7 CubeMx 串口一配置_stm32cubemx h750-CSDN博客
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint32_t pwm_count=0;
/* USER CODE END 0 *//* USER CODE BEGIN 2 */
// enable timerHAL_TIM_Base_Start_IT(&htim2); // 啟動定時2
/* USER CODE END 2 *//* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM2){/* 。。。 */pwm_count++;if(pwm_count<8){HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_SET);}else{HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_RESET);}if(pwm_count==10){pwm_count=0;}
// printf("I'm timer2\r\n"); /* 插入換行 */}
};/* USER CODE BEGIN 4 */
1.2.2 修改配置
如果有printf 重映射,勾選 MicroLIB
1.2.3 下載程序
這里使用jlink,下邊是缺少有關STM32H750ZB相關的軟件,搜索下,安裝下即可。
(如果搜索不到,可以考慮升級keil版本)
2 PWM使用
2.1 CubeMX 配置
2.1.1 PWM 配置
這里選擇 TIM4 的通道四,對應引腳 PB9;
2.1.2 周期\頻率計算方法
查看 TIM4 對應的時鐘頻率:
頻率計算公式:
根據圖上配置,可以知道當前頻率為:
高電平時間:
2.2 keil5 配置
2.2.1 添加代碼
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4); //開啟PWM對應的通道uint16_t pwmval=30000; //PWM占空比
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, pwmval); // 修改占空比 tim4
后邊燒錄啥的就省略了...