(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频率
此处是(321250)/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不是很准,但这也太飘了。