|
1首先要解決在proteus仿真定時器的bug。看鏈接http://www.zg4o1577.cn/bbs/dpj-131825-1.html
2cube設置參數
3MDK修改代碼
4proteus仿真
總結,效果正常。可以很好的學習時鐘樹與定時器。(主要考慮非中斷模式的使用,網上cube主要介紹的是中斷模式)
STM32F103單片機中非中斷模式TIM3定時器的精確延時仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真效果
單片機程序源碼:
- 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); //啟動定時器
- htim3.Instance->SR &= 0xfffffffe; //清除溢出標志
- while((htim3.Instance->SR & 0x01) == 0x00);//等待溢出標志
- HAL_TIM_Base_Stop(&htim3);// 停止定時器-----此語句加不加都能正常工作
- HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//翻轉輸出
-
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
復制代碼 |
-
仿真晶振設置
-
時鐘樹設置
-
TIM3設置
-
仿真電路
-
測試程序
-
目錄
-
-
stm32f103r4_Tim2_100ms.7z
2022-5-18 04:58 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
3.35 MB, 下載次數: 92, 下載積分: 黑幣 -5
|