1.打開STM32CubeMX軟體,點選New Project。
2.點選Board Selector,選擇NUCLEO-F0308,按OK鍵。
3.選擇TIM1,Clock Source 選擇Internal Clock。
4.設定內部Clock,因TIM1使用APB1作為clock source,所以可以確認Clock為48MHz。
5.點選Configuration的TIM1。
6.STM32F030R8的CPU為48MHz,TIM1CLK為48MHz。若要將Counter Clock設定為10KHz,
則Prescaler應該設定為(System Core Clk / 10KHz)-1 = 4799。
若要產生每一秒中斷一次,頻率也就是1Hz。Update Rate為1Hz,依照公式可得出:
Update Rate = 1Hz = Counter Clock / (ARR+1) = 10KHz / (ARR+1) 。
可算出ARR = 9999 ,並把Prescaler填入4799,Counter Period填入9999。
7.NVIC Settings 選項內,TIM1interrupts Enabled打勾。
8.在Project Settings選擇程式編輯的軟體。這裡是選擇MDK-ARM V5(Keil)來編輯。
9.Project / Generate Code來產生Project Code,打開Project,在main.c內的/* USER CODE BEGIN 2 */後面加上HAL_TIM_Base_Start_IT(&htim1);來啟動TIM1。
10.在Main.c內,/* USER CODE BEGIN 4 */與/* USER CODE END 4 */之間,
填入void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)函式 ;如下
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
}
/* USER CODE END 4 */
程式動作是LED每1秒閃爍一次。
STM32CubeMX Timer中斷教學錄影
沒有留言:
張貼留言