完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
(5)Proteus 8.9上的STM32仿真系列(HAL)—独立看门狗IWDG
**大坑提示:**后续做了窗口看门狗WWDG的仿真,无论喂不喂狗都会Reset,在板子上烧了程序正常,大家可以跳过这个坑,毕竟proteus仿真个别地方还是有点问题的。之前8.6的uart2无输出,tim3好像也有问题,8.9我还没试,大家如果遇到类似的问题可以跳过,有条件的这部分可以在实物上做实验。 **实验设计:**设置IWDG 一秒让STM32复位一次,但是按键PA0每按一次就重置这个时间,芯片就不会复位。是否复位观察PA1上接的LED,复位时的电平变化会导致LED闪烁一次。 一、Proteus配置 1.如图放置元件,芯片仍为STM32 F103R6TX。 二、CUBEMAX IDE配置 1.老样子开启RCC配置时钟。 2.配置PA0输入,PA1输出 3.开启IWDG,如图配置参数 复位时间=(Prescaler x Reload)/LSI频率 此处是(32 x 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 */ } 三、仿真 1.不按按钮,应该是一秒左右复位一次 2.连续点击按钮,不断刷新看门狗 应该是1秒左右复位一次,但仿真是1-4秒才复位一次,虽然LSI不是很准,但这也太飘了。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:44 , Processed in 1.277712 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号