首页 > 其他分享 >嵌入式专题研究2:系统时钟和定时器和看门狗

嵌入式专题研究2:系统时钟和定时器和看门狗

时间:2023-10-09 20:37:17浏览次数:35  
标签:定时器 HAL 函数 Pin 嵌入式 GPIO 看门狗

时钟系统:

构成:

1.振荡器——脉搏

  RC振荡器

  晶体振荡器

  四种:HSE,HSI,LSE,LSI

2.唤醒定时器

3.PLL倍频器

4.各种分频器

 可以通过stm32cubemx进行时钟配置,但是在SystemClock_Config()函数前,在启动文件中有默认的时钟配置。

  while (1)
  {
        HAL_GPIO_WritePin(GPIOC,LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin,GPIO_PIN_RESET);
        mydelay(1000);
        HAL_GPIO_WritePin(GPIOC,LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin,GPIO_PIN_SET);
        mydelay(1000);

定时器:能够实现定时和计数

 HAL_Delay()的实现:

使用hal库时,发现__weak修饰符:该修饰符的函数被称为弱函数,用户可以在用户文件中重新定义一个同名函数,最终编译器编译的时候,会选择用户定义的函数,如果用户没有重新定义这个函数,那么编译器就会执行__weak 声明的函数,并且编译器不会报错。

缺陷:在中断服务函数中使用HAL_Delay会引起混乱,因为HAL_Delay是通过中断方式实现的,而Systick的中断一般操作系统优先级最低,所以在中断中运行HAL_Delay会导致死锁的现象。

定时器:

 APB1和APB2上挂了很多不同的定时器,需要注意。

计时时间为1/(TIM * CLK/(PSC+1))*(ARR+1)

所以定时器需要配置PSC预分频器和自动重载寄存器ARR。

输入捕获和输出比较:输入捕获可以检测外部引脚电平的变化,输出比较用来控制一个输出波形。

实验:利用基础定时器实现定时1m中断,并在中断处理函数中打印输出字符。

stm32f103zet6的APB1和APB2都是72mhz。

使能定时器中断。

高级定时器:

定时器通道:

查看了手册,跟我用的pz6806l的led对应的是TIM3的ch1-ch2,复用的管脚为PC6-PC7。

 输入捕获:外部管脚,可用于测量频率或者电平持续时间。

实验:捕获按键按下后低电平持续的时间

看门狗:

独立看门狗IWDG:监控系统是否出现故障,将系统复位。

关键字寄存器IWDG_KR:喂狗,修改重装载寄存器,启动IWDG

采用LSI时钟,在低电压情况下也能工作。

实验:按下按钮就喂狗,不按下则复位

if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==GPIO_PIN_RESET){
            HAL_IWDG_Refresh(&hiwdg);
}

窗口看门狗WWDG:检测软件故障。

可以配置时间窗,检测应用程序非预期中的运行流程。

复位条件:1.自减计数器小于0x40

      2. 喂狗时间大于上窗口的值

因此必须在时间窗口中喂狗,其余时间喂狗均会复位。

 

    此页面的语言为中文(简体)   翻译为        
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:定时器,HAL,函数,Pin,嵌入式,GPIO,看门狗
From: https://www.cnblogs.com/ustc2122zy/p/17725012.html

相关文章

  • 《安富莱嵌入式周报》第324期:单对以太网技术实战,IROS2023迪士尼逼真机器人展示,数百万
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 更新一期视频教程:第8期ThreadX视频教程:应用实战,将裸机工程移植到RTOS的任务划分,驱动和应用层交互,中断DMA,C库和中间件处理等注意事项https://www.armbbs.cn/forum.php?mod=vie......
  • 嵌入式面试题
    @目录前言C语言关键字volatilestatic作用于变量声明局部变量声明外部变量作用于函数const用于变量用于指针用于函数sizeof位域字节对齐(#pragmapack)结构体成员数组大小为0函数memsetmemcpy变量变量定义写法字节长度(32位系统)编译预编译如何避免头文件被重复包含#与##的作用内存程序......
  • Android 定时器简单使用及学习
    本文,介绍常用定时器实现方式:1)Handler+Sleep方式2)Handler+PostDelayed方式3)Handler+Timer方式Handler的主要作用就是用来处理接收到的信息,用Handler消息传递机制是为了多个线程并发更新U的同时,保证线程安全1)Handler+Sleep方式1.1)Handler+Sleep定义publicclassHandlerAn......
  • GUI-LCD:嵌入式GUI开发极简化,快速构建高质量的个性化用户界面
    引言嵌入式液晶显示技术是嵌入式系统开发的核心组成部分。然而,传统的液晶显示开发流程繁琐且工作量大,需要进行硬件设计、硬件调试、软件开发、GUI设计和集成验证等多个步骤。这不仅需要花费大量的时间和精力,还增加了开发的复杂性和风险。一、传统开发流程的挑战硬件设计:根据液......
  • 嵌入式linux某个硬件测试失败,解决问题思路(eg:wifi)
    //嵌入式linux某个硬件测试失败,解决问题思路(eg:wifi)1软件上,引脚功能设置问题,设备树问题.=>可检查设备树,关闭其他多余的引脚,单独测试这个功能2软件上,软件启动先后顺序导致加载异常问题.=>可设置系统启动,不开启任何功能,通过多次加载卸载*.so文件,运行程序,......
  • 嵌入式linux运行程序 -sh ./xxx: not found 解决办法
    问题分析在嵌入式Linux环境下,运行应用程序,提示”-sh:./xxx:notfount” 出现该问题是因为缺少动态链接库,通过”lddxxx”指令查看缺少的库。 库文件从哪里来,需要拷贝在哪里?找到我们搭建的交叉编译环境目录,我安装在“/usr/local/arm/”目录中。进入目录中可以查找到所需......
  • Linux 嵌入式根文件系统文件调用流程
    原文:https://blog.csdn.net/KingRing_/article/details/121589073Linux嵌入式根文件系统文件调用流程当我们将根文件系统挂载起来后,加载busybox中的init程序,创建init进程,init进程在运行过程中会读取/etc/inittab文件,在inittab文件中,会读取解析/etc/init.d/rcS文件,然后执行/etc/i......
  • 嵌入式裸机设计思想——时间片轮裸机开发架构+状态机+定时器调度机制
    前言(1)(2)在MCU开发的时候,很多入门者会固执的认为,做项目一定要上实时操作系统。但是真的是这样的吗?(3)我曾经阅读过一位10年嵌入式开发经验的大佬分享的公众号,这位大佬感叹到,其实对于绝大多数时候,MCU开发不需要上操作系统。只要任务分配的合理,百分之九十的项目不上操作系统都是能够跑......
  • 08-定时器的基本原理与应用
    定时器的基本原理与应用1、什么是定时/计数器?在没有钟表的时候,定时的方式通过有一注香的时间,或者一桶水的时间。前者烧香不断减少是减法,后者滴水不断增加是加法。定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断处理请求,从而实......
  • FreeRTOS 原理 --- 软件定时器
     简介 有一个定时器任务,任务内读队列。启动定时器,会向队列发送消息,定时器任务读到消息后把定时器回调函数等信息作为一个链表项插入链表。当链表有链表项,算出还剩多长时间执行定时器回调函数,这个时间作为定时器任务阻塞时间。所以定时器任务重新运行要么是时间到准备运行定时器......