|
1首先要解決在proteus仿真定時(shí)器的bug。看鏈接http://www.zg4o1577.cn/bbs/dpj-131825-1.html
2cube設(shè)置參數(shù)
3MDK修改代碼
4proteus仿真
總結(jié),效果正常。可以很好的學(xué)習(xí)時(shí)鐘樹與定時(shí)器。(主要考慮非中斷模式的使用,網(wǎng)上cube主要介紹的是中斷模式)
STM32F103單片機(jī)中非中斷模式TIM3定時(shí)器的精確延時(shí)仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真效果.png (146.29 KB, 下載次數(shù): 74)
下載附件
仿真效果
2018-9-30 07:39 上傳
單片機(jī)程序源碼:
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- /* USER CODE END 1 */
- /* MCU Configuration----------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- __HAL_RCC_TIM1_CLK_ENABLE();//去除proteus 的bug
- MX_TIM3_Init();
- /* USER CODE BEGIN 2 */
- //__HAL_RCC_TIM1_CLK_ENABLE();
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- HAL_TIM_Base_Start(&htim3); //啟動(dòng)定時(shí)器
- htim3.Instance->SR &= 0xfffffffe; //清除溢出標(biāo)志
- while((htim3.Instance->SR & 0x01) == 0x00);//等待溢出標(biāo)志
- HAL_TIM_Base_Stop(&htim3);// 停止定時(shí)器-----此語句加不加都能正常工作
- HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//翻轉(zhuǎn)輸出
-
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
復(fù)制代碼 |
|