当前位置: 代码迷 >> 综合 >> (5)Proteus 8.9上的STM32仿真系列(HAL)---独立看门狗IWDG
  详细解决方案

(5)Proteus 8.9上的STM32仿真系列(HAL)---独立看门狗IWDG

热度:98   发布时间:2024-02-08 05:01:05.0

(5)Proteus 8.9上的STM32仿真系列(HAL)—独立看门狗IWDG

**实验设计:**设置IWDG 一秒让STM32复位一次,但是按键PA0每按一次就重置这个时间,芯片就不会复位。是否复位观察PA1上接的LED,复位时的电平变化会导致LED闪烁一次。

一、Proteus配置
1.如图放置元件,芯片仍为STM32 F103R6TX。
在这里插入图片描述
二、CUBEMAX IDE配置
1.老样子开启RCC配置时钟。
2.配置PA0输入,PA1输出

在这里插入图片描述
3.开启IWDG,如图配置参数
复位时间=(PrescalerReload)/LSI频率
此处是(32
1250)/40k=1秒
在这里插入图片描述
4.生成代码后如下在main里插入

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();MX_IWDG_Init();/* USER CODE BEGIN 2 *///点亮PA1的LED,每次复位的时候会灭一下HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){HAL_Delay(5);//不延时按按钮多了容易报错卡住//检测按钮是否按下,按下了就重新填充计时if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==GPIO_PIN_SET)HAL_IWDG_Refresh(&hiwdg);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

5.设置HEX导出,build all
三、仿真
1.不按按钮
在这里插入图片描述
2.连续点击按钮
在这里插入图片描述
应该是1秒左右复位一次,但仿真是1-4秒才复位一次,虽然LSI不是很准,但这也太飘了。