找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6024|回复: 0
收起左侧

STM32F103中非中断模式TIM3定时器精确延时+Proteus仿真源码

[复制链接]
ID:86450 发表于 2018-9-30 07:44 | 显示全部楼层 |阅读模式
1首先要解决在proteus仿真定时器的bug。看链接http://www.51hei.com/bbs/dpj-131825-1.html
2cube设置参数
3MDK修改代码
4proteus仿真
总结,效果正常。可以很好的学习时钟树与定时器。(主要考虑非中断模式的使用,网上cube主要介绍的是中断模式)

STM32F103单片机中非中断模式TIM3定时器的精确延时仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

仿真效果

仿真效果


单片机程序源码:
  1. int main(void)
  2. {
  3.   /* USER CODE BEGIN 1 */
  4.   /* USER CODE END 1 */
  5.   /* MCU Configuration----------------------------------------------------------*/
  6.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  7.   HAL_Init();
  8.   /* USER CODE BEGIN Init */
  9.   /* USER CODE END Init */
  10.   /* Configure the system clock */
  11.   SystemClock_Config();
  12.   /* USER CODE BEGIN SysInit */
  13.   /* USER CODE END SysInit */
  14.   /* Initialize all configured peripherals */
  15.   MX_GPIO_Init();
  16.         __HAL_RCC_TIM1_CLK_ENABLE();//去除proteus 的bug
  17.   MX_TIM3_Init();
  18.   /* USER CODE BEGIN 2 */
  19. //__HAL_RCC_TIM1_CLK_ENABLE();
  20.   /* USER CODE END 2 */

  21.   /* Infinite loop */
  22.   /* USER CODE BEGIN WHILE */
  23.   while (1)
  24.   {
  25.                 HAL_TIM_Base_Start(&htim3); //启动定时器
  26.                 htim3.Instance->SR  &= 0xfffffffe; //清除溢出标志
  27.                 while((htim3.Instance->SR & 0x01) == 0x00);//等待溢出标志
  28.                 HAL_TIM_Base_Stop(&htim3);// 停止定时器-----此语句加不加都能正常工作
  29.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//翻转输出
  30.                
  31.   /* USER CODE END WHILE */
  32.   /* USER CODE BEGIN 3 */
  33.   }
  34.   /* USER CODE END 3 */
  35. }
复制代码

仿真晶振设置

仿真晶振设置

时钟树设置

时钟树设置

TIM3设置

TIM3设置

仿真电路

仿真电路

测试程序

测试程序

目录

目录

stm32f103r4_Tim2_100ms.7z

3.35 MB, 下载次数: 90, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表