基于ARM看门狗程序设计
Arm实验看门狗
ARM实验姓名唐珊珊学号2011412614实验目的:掌握独立看门狗的工作原理和使用方法。
实验原理:调用固件库设置和初始化独立看门狗,通过Led4的状态指示系统运行,同时按下按键SW1不断重置看门狗寄存器(俗称喂狗),当停止按键后,,则MCU会在看门狗超时的作用下系统重启。
实验步骤:要实现本实验功能设计,需要进行必要的设置,其步骤如下:1)设置Led驱动管教为推挽输出,Sw1管脚为浮空输入。
2)Led4熄灭一下,以表示刚刚复位,3)调用IWDG_writeAccessCmd函数向IWDG_KR写入0X5555。
通过这步,我们取消看门狗寄存器的写保护。
4)设置看门狗的分频系数,本例中为32。
在固件库中,可以调用IWDG_SetPrescaler函数实现。
5)设置看门狗的重装载的值,本例中为625.在固件库中,可以调用IWDG_SetReload函数实现。
6)调用IWDG_Enable函数向IWDG_KR写入0xcccc。
通过这句,来启动STM32的看门狗。
7)检测按键Sw1,如果按下则调用IWDG_ReloadCounter函数使STM32重新加载IWDG_RlR的值到看门狗计数器里面。
也可以用该命令来喂狗。
程序为:独立看门狗#include "stm32f10x.h"void GPIO_Config(void);void delay(void);int main(void){GPIO_Config();GPIO_SetBits(GPIOC,GPIO_Pin_9);delay();GPIO_ResetBits(GPIOC,GPIO_Pin_9);IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_32);IWDG_SetReload(625);IWDG_Enable();while(1){if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_3)==0)IWDG_ReloadCounter();}}void delay(void){uint32_t i;for(i=0;i<6000000;i++){}}void GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC,ENA BLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD,&GPIO_InitStructure);}中断函数uint32_t led=1;void WWDG_IRQHandler(void){uint8_t cr;cr=WWDG->CR;cr&=0x7f;if(cr<0x50){WWDG_SetCounter(0x70);WWDG_ClearFlag();led=~led;if(led==0)GPIO_ResetBits(GPIOC,GPIO_Pin_9);elseGPIO_SetBits(GPIOC,GPIO_Pin_9);}}#include "stm32f10x.h"void GPIO_Config(void);void delay(void);//uint32_t led=0;int main(void){NVIC_InitTypeDef NVIC_InitStructure;GPIO_Config();GPIO_ResetBits(GPIOC,GPIO_Pin_9);delay();GPIO_SetBits(GPIOC,GPIO_Pin_9);delay();RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);WWDG_SetPrescaler(WWDG_Prescaler_8);WWDG_EnableIT();WWDG_SetWindowValue(0x50);WWDG_Enable(0x70);NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x07; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x07;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);while(1){;}}void GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);}void delay(void){uint32_t i;for(i=0;i<6000000;i++){}}中断函数为void WWDG_IRQHandler(void){uint8_t cr;cr=WWDG->CR;cr&=0x7f;if(cr<0x50){WWDG_SetCounter(0x70);WWDG_ClearFlag();led=~led;if(led==0)GPIO_ResetBits(GPIOC,GPIO_Pin_9);elseGPIO_SetBits(GPIOC,GPIO_Pin_9);}}一秒定时看门狗#include "stm32f10x.h"void GPIO_Config(void);void NVIC_Config(void);void TIM1_Config(void);void EXTI_Config(void);void IWDG_Config(void);int main(){GPIO_Config();NVIC_Config();TIM1_Config();EXTI_Config();IWDG_Config();while(1){}}void GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENA BLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD, &GPIO_InitStructure);}void NVIC_Config(void){NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x07;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x07;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}void TIM1_Config(){TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);TIM_TimeBaseInitStructure.TIM_ClockDivision=0;TIM_TimeBaseInitStructure.TIM_Period=(10000-1);TIM_TimeBaseInitStructure.TIM_Prescaler=(7200-1);TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);TIM_ClearITPendingBit(TIM1,TIM_IT_Update);TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);TIM_Cmd(TIM1,ENABLE);}void EXTI_Config(void){EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource3);EXTI_InitStructure.EXTI_Line = EXTI_Line3;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);}void IWDG_Config(void){IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_32);IWDG_SetReload(4000);IWDG_Enable();}中端函数为int led=1;void TIM1_UP_IRQHandler(void){if(TIM_GetITStatus(TIM1,TIM_IT_Update)!=RESET){IWDG_ReloadCounter();led=~led;if(led==1)GPIO_SetBits(GPIOC,GPIO_Pin_9);elseGPIO_ResetBits(GPIOC,GPIO_Pin_9);TIM_ClearITPendingBit(TIM1,TIM_IT_Update);}}void EXTI3_IRQHandler(void){/* 检测EXTI3是否有效*/if(EXTI_GetITStatus(EXTI_Line3)!= RESET){while(1){/*可随便加入现象,便于观察*/GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);/* 清除EXTI3的悬起标志位*/EXTI_ClearITPendingBit(EXTI_Line3);}}}。
avr单片机看门狗程序
单片机看门狗程序/*此程序实现单片机"看门狗"WDT的功能*/#include "p18f458.h"unsigned long i;/*系统初始化子程序*/void initial(){TRISD = 0X00; /*D口设为输出*/}/*延时子程序*/void DELAY(){for (i=19999;--i;)continue;}/*主程序*/main (){initial(); /*初始化,设定看门狗的相关寄存器*/PORTD = 0X00; /*D口送00H,发光二极管亮*/DELAY(); /*给予一定时间的延时*/PORTD = 0XFF; /*D口送FFH,发光二极管灭*/while(1){;} /*死循环,等待看门狗溢出复位*/}-------------------汇编语言版本的单片机看门狗程序---------------- ;此程序实现"看门狗"WDT的功能;此单片机看门狗由独家提供LIST P=18F458INCLUDE "P18F458.INC"DEYH EQU 0X20DEYL EQU DEYH+1ORG 0X00GOTO MAINORG 0X30;*************初始化子程序*****************INITIALCLRF TRISD ;D口设为输出RETURN;**************延时子程序**************************DELAYMOVLW 0XFFMOVWF DEYHAGAIN1MOVLW 0XFFMOVWF DEYLAGAIN2DECFSZ DEYLGOTO AGAIN2DECFSZ DEYHGOTO AGAIN1NOPRETURN;************单片机看门狗主程序**************************** MAIN NOPCALL INITIAL ;系统初始化MOVLW 0X00MOVWF PORTD ;D口送00H,发光二极管亮CALL DELAYMOVLW 0XFFMOVWF PORTD ;D口送FFH,发光二极管灭LOOPGOTO LOOP ;死循环,等待看门狗复位ENDAVR看门狗程序范例A VR看门狗程序范例,程序演示了看门狗的复位过程,使用了本站新手入门的第一个范例,普通情况下,程序最后陷入死循环,但是这个程序里,看门狗让单片机复位,你会看见LED 一直闪动,效果和第一个范例程序相同。
基于单片机按键控制看门狗仿真设计
基于单片机按键控制看门狗仿真设计本文档旨在介绍《基于单片机按键控制看门狗仿真设计》的主题,并提供写作大纲的目的概述。
该文档将深入探讨如何利用单片机按键控制看门狗的仿真设计。
我们将详细介绍看门狗的概念和原理,并提供一个基于单片机按键的仿真设计案例。
通过本文档的阅读,读者将了解如何使用单片机按键来控制看门狗,在系统遇到异常情况时采取适当的措施来保护系统的稳定性和可靠性。
接下来,将按照以下大纲扩写内容,详细介绍《基于单片机按键控制看门狗仿真设计》的相关内容。
在介绍基于单片机按键控制看门狗的仿真设计之前,我们需要先了解单片机和看门狗的概念,并探讨为什么使用单片机按键控制看门狗是有意义的。
单片机是一种集成了微处理器核心、内存、输入/输出设备和其他功能模块的微型计算机系统。
它具有体积小、功耗低、成本低等特点,因而广泛应用于各种电子设备中。
看门狗(Watchdog)是一种用于检测和处理系统故障的硬件或软件机制。
它监视系统运行状态,并在系统发生故障时自动执行预定的纠错操作。
看门狗的主要作用是保障系统的稳定性和可靠性。
基于单片机按键控制看门狗的仿真设计就是利用单片机上的按键来控制看门狗的功能。
通过按下特定的按键,我们可以触发或关闭看门狗的工作,以解决系统故障或异常情况。
使用单片机按键控制看门狗具有以下意义:提高系统的稳定性:通过按键控制看门狗,可以及时检测和处理系统故障,保障系统的稳定运行。
简化系统调试过程:按键控制看门狗可以方便地触发系统故障模式,便于调试和定位问题。
提升系统的可靠性:看门狗机制可以在系统故障时自动执行纠错操作,提高系统的可靠性和容错能力。
综上所述,基于单片机按键控制看门狗的仿真设计是一种有效的解决方案,可以提高系统的稳定性、简化系统调试过程并提升系统的可靠性。
本文将阐述按键控制看门狗的仿真设计步骤,包括硬件和软件方面的具体要点。
硬件设计步骤准备所需材料和器件,包括单片机、按键、继电器等。
按照电路原理图连接各个器件,确保电路的正确性和稳定性。
单片机实验看门狗实验
实验八 看门狗实验
/***************************************************************************** // Function name : rtc_get_date // Description : 获取实时时钟当前时间、日期 // Return type : void // Argument : p_date, 返回日期的指针 *****************************************************************************/ void rtc_get_date(st_date* p_date) { rRTCCON = 0x01; p_date->year = rBCDYEAR ; p_date->mon = rBCDMON ; p_date->day = rBCDDAY ; p_date->week_day= rBCDDATE ; p_date->hour = rBCDHOUR ; p_date->min = rBCDMIN ; p_date->sec = rBCDSEC ; rRTCCON = 0x00; } /***************************************************************************** // Function name : rtc_tick_init // Description : 初始化S3C2410的TICK定时器 // Return type : void // Argument : tick, 设置的TICK频率(时钟滴答的周期为 (1+tick)/128秒) *****************************************************************************/
基于arm的门禁系统设计
目录一、实验目的 (2)二、实验说明 (2)三、实验设备 (2)四、实验内容 (2)4.1门禁系统的概述 (2)4.2 门禁系统的方案 (2)4.3 门禁系统的硬件部分 (3)4.4 门禁系统的软件部分 (6)4.5 门禁系统的软、硬件调试 (8)结论 (9)程序 (10)一、实验目的1.理解和掌握基于单片机的嵌入式系统的设计理念与设计方法。
2.掌握Protel 原理图设计方法。
二、实验说明以住宅小区或商场停车场为基础,物联网技术为依托,设计一套车辆出入口门禁系统。
我们以单片机为控制核心,采用非接触IC卡技术、TCP/IP网络技术,实现车辆出入道闸控制及停车信息的远程统计、查询。
本实验完成其中的非接触IC卡读写部分。
系统电路结构框图如下图所示。
三、实验设备1、计算机一台2、单片机试验箱四、实验内容4.1门禁系统的概述4.1.1 门禁系统概念出入口门禁控制系统采取以感应卡来取代用钥匙开门的方式。
使用者用一张卡可以打开多把门锁, 对门锁的开启也可以有一定的时间限制。
如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。
出入口门禁控制系统是通过对出入口的准入情况进行控制、管理和记录的设备,对何人何时在何地进行详细跟踪,以实现中心对出入口的24小时控制、监视及管理。
4.1.2 门禁系统的特点系统将IC卡技术、计算机控制技术与电子门锁有机结合,用IC卡替代钥匙,配合计算机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和无法信息记录等不足,利用数据控制器采集的数据实现数字化管理可为内部人力资源的有效管理等带来意想不到的效果。
电子钥匙:授权后的IC卡即可当作电子钥匙,将此电子钥匙感应器前一晃, 控制器对该卡进行身份验证,验证合法后即控制电子门锁自动打开。
开门权限:按门设置:可以根据持卡人身份权限设定有效开门区域(控制器号码)。
系统可设有最高权限卡,该卡可以打开系统辖区内所有电子门锁。
自动报警:非法使用卡或强行打开门锁等非正常情况下系统会将自动发出报警信号,系统将自动记录非常状况的时间、门号、状态等详细信息,确保门锁安全和事后查证。
第十二章ARM看门狗Watchdog电路
如看门狗初始化程序:
//------------------------------------------------------------------------ // 看门狗初始化
表12-3 看门狗定时器数据寄存器
寄存器名称 WTDAT
地址 0x53000004
读/写状态 R/W
描述 看门狗定时器数据寄存器
复位值 0x8000
表12-4 看门狗定时器数据寄存器WTDAT各位的定义
WTDAT 当前重载值
位
描述
初始状态
[15:0]
看门狗定时器的重载计数器
0x800
表12-5 看门狗定时器/计数器寄存器
factor)
其中, PCLK为系统时钟频率;Prescaler value为预分频值 (值0~255 );Division_ factor为四分频值,可以是16、 32、64或128。
看门狗的定时周期:
T = WTCNT×t_Watchdog
其中WTCNT是看门狗定时器的计数器,它的值表示
该定时器的当前计数值。
寄存器名称 地址 WTCNT 0x53000008
读/写状态
描述
复位值
R/W 看门狗定时器/计数器寄存器 0x8000
表12-6 看门狗定时器/计数器寄存器WTCNT各位的定义
WTCNT 计数器
位
描述
初始状态
[15:0]
看门狗定时器的当前计数器
0x800
12.2 看门狗电路的编程
看门狗电路编程较简单,首先看门狗电路初始化,即
ARM嵌入式开发实例6-2
6.2看门狗WatchDog模块
独立看门狗IWDG寄存器
寄存器名称 寄存器描述
KR
IWDG键值寄存器
PR
IWDG预分频寄存器
RLR
IWDG重装载寄存器
SR
IWDG状态寄存器
齐鲁工业大学
6.2看门狗WatchDog模块
6.2.4
独立看门狗的库函数(教材302-306页)
功能描述 使能或失能指定的RTC中断
使能WWDG早期唤醒中断EWI 设置WWDG计数器值 使能WWDG并装入计数器值 检查WWDG早期唤醒中断标志位的状态 清除早期唤醒中断标志位 齐鲁工业大学
齐鲁工业大学
6.2看门狗WatchDog模块
6.2.2
独立看门狗的功能特性
独立看门狗由专用的低速时钟(LSI)驱动,即使主时钟发生 故障它也仍然有效。适合应用于需要将看门狗作为一个完全 独立于系统主程序之外的进程,并且对时间精度要求较低的 场合。
IWDG主要性能 自由运行的递减计数器 时钟由独立的RC振荡器提供(可在停止和待机模式下工作) 看门狗被激活后,则在计数器计数至0x000时产生复位
存有计数 上限值
窗口看门狗 结构框图
齐鲁工业大学
6.2看门狗WatchDog模块
独立看门狗的功能模块
齐鲁工业大学
6.2看门狗WatchDog模块
6.2.6 窗口看门狗的寄存器
寄存器名称 寄存器描述
CR
WWDG控制寄存器
CFR
IWDG设置频寄存器
SR
IWDG状态寄存器
齐鲁工业大学
6.1
实时时钟模块
6.1.4
RTC实时时钟的寄存器及库函数
看门狗的操作: ۞启动看门狗 在系统复位后,看门狗总是处于关闭状态,设置WWDG_CR寄存器的 WDGA位能够开启看门狗,随后它不能再被关闭,除非发生复位。 ۞控制递减计数器 递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续 递减计数。当看门狗被启用时,T6位必须被设置,以防止立即产生一个 复位。
基于ARM的智能门禁系统设计
摘要门禁系统作为安防系统中的一个重要部分,随着人们的生活水平和工作的质量的提升,其技术要求也得到了相应的提升。
同时在楼宇自动化中门禁系统也得了很多的重视。
它以计算机技术为主体,涉及了电子、机械、光学、通讯技术、生物技术等多种技术用来有效的对出入口进行控制,并且限制出入人员的权限。
计算机系统通过门禁锁实现对出入口的控制,而最多只需要一个人在中心监控室实现有必要的人为控制。
本课题就是以ARM为主控制器,将嵌入式技术和射频识别技术应用到门禁系统中,利用嵌入式系统丰富的控制器资源、对实时多任务有很强的支持能力、可扩展的处理器结构方便以后功能的完善,同时射频技术来检测IC卡,通行的人用IC卡来获得进入的权限。
关键字:门禁系统,嵌入式技术,身份识别技术ABSTRACTAccess control system as an important part of the security system, with the enhancement of people's living standards and the quality of work, technical require ments has also been a corresponding increase. Access control systems in building automation also got a lot of attention. Computer technology as the main body involved in the electronic, mechanical, optical, communications technology, biotechnology and other technologies used to control the import and export, and to limit access permissions. Computer system to control the import and export through access control lock up only one person in a central control room to achieve the necessary human control. The sub ject is the controller, ARM-based embedded technology and radio frequency identifi cation technology to the access control system, embedded system controller, a strong ability to support real-time multi-tasking, scalable processors structure to facilitate future improve the function of the radio frequency technology to detect IC card, IC card access to get permission to enter.Key words :Access control system ,embedded technology ,ID technology目录摘要 ................................................................................................................................... ABSTRACT (I)第一章绪论 01.1 课题背景和意义 01.2 门禁系统的发展和国内外现状 01.3论文研究的内容和工作 (1)第二章门禁系统技术的介绍 (3)2.1 RFID射频识别技术的介绍 (3)2.2基于ARM平台的嵌入式系统的介绍 (4)2.2.1 ARM技术的介绍 (4)2.2.2 嵌入式系统概述 (5)第三章总体设计和软硬件平台的选择 (8)3.1系统总体设计 (8)3.2硬件平台的选择 (8)3.2.1 S3c6410芯片介绍 (8)3.2.2 MF RC500射频读写芯片 (10)3.3软件平台的选择 (12)3.3.1 选择Linux操作系统的理由 (13)3.3.2 bootloader的选择 (14)3.3.3 文件系统的选择 (15)第四章系统详细设计与实施 (17)4.1 嵌入式Linux开发环境的搭建 (17)4.2 主机开发环境的搭建和系统的移植 (17)4.2.1 搭建主机的开发环境 (17)4.2.2 U-boot的编译 (17)4.2.3 内核的定制 (18)4.2.4 文件系统的制作 (21)第五章应用软件的设计 (23)5.1 软件设计的总体思路 (23)5.2 通过协议编写程序 (25)结论 (27)参考文献 (28)附录 (29)致谢 (59)第一章绪论1.1 课题背景和意义在科技、社会经济飞速发展的当今,城市的面貌发生了极大的变化,林立的大厦、众多成片小区的出现的同时也产生了不少的安全隐患,不法分子利用高科技手段犯罪的行为也逐渐多了起来,怎么让人们利用现代科技手段为自己的人身财产安全保驾护航,同时有效的阻止犯罪行为呢?传统的门锁和防盗门已经不能满足人们的需求了。
AVR单片机看门狗实验报告2013v1(有不同)
void watchdog_off(void)
{ /* Write logical one to WDTOE and WDE
这里严格要求这样的顺序*/
WDTCR = (1<<WDTOE) | (1<<WDE); /* Turn off WDT 这里严格要求这样的顺序*/
WDTCR = 0x00;
}
void Delay(void) { unsigned char i,j; for(i=200;i>0;i--)
{ for(j=100;j>0;j--); WDR(); //这里喂狗不然超过时间了
BIT 2、1、0 这三位设置看门狗溢出的间隔,在设置好的时间内不喂狗,就重启。
二、 具体例子(基于 ICCAVR7.22)
A、 打开和配置看门狗为最大时间间隔 2.2s void watchdog_on(void) { WDTCR |=(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0); }
{ } }
4.2 加入看门狗后
//ICC-AVR application builder : 2013-9-23 9:24:33 // Target : M16 // Crystal: 4.0000Mhz
#include <iom16v.h> #include <macros.h>
void port_init(void) { PORTD = 0x00; DDRD = 0xff; }
毕业设计(论文)-基于ARM的SD模块开发
提供全套毕业论文图纸,欢迎咨询目录1 绪论 (1)1.1嵌入式系统开发的背景及意义 (1)1.1.1本课题的研究方法和理论依据 (1)1.1.2嵌入式系统当前国内外发展情况 (2)1.1.3嵌入式系统的发展前景及相关问题。
(3)1.2选题意义 (4)1.3本课题的设计思路 (4)2系统组成原理 (5)2.1LPC2103的引脚功能 (5)2.2SPI总线 (5)2.3SD模块的构成 (6)2.4SPI中断应用 (8)2.5看门狗的组成原理 (8)2.5.1看门狗的工作原理 (8)2.5.2看门特的特性 (8)2.612864液晶 (10)3 程序设计 (12)3.1SPI总线及其中断 (12)3.2基于SPI总线的SD卡程序设计方案 (14)3.2.1SD初始化 (14)3.2.2SD卡读一个扇区函数 (14)3.2.3SD卡写一个扇区函数 (15)3.2.2基于SPI总线的SD卡设计的流程图 (15)3.2.2 SD卡程序流程图 (16)3.2.4 基于SPI总线的SD卡程序设计的扩展 (19)3.3.1 看门狗的程序流程图 (20)3.3.2 看门狗的程序清单 (21)3.4.212864液晶的程序流程图 (22)3.4.312864液晶的程序设计清单 (22)3.4.412864液晶的程序设计扩展 (24)(1)12864的GUI建立 (24)4 程序调试和功能分析 (26)4.1使用仪器 (26)4.2调试前准备工作 (26)4.3系统调试 (26)5 问题处理 (27)致谢 .................................................. 错误!未定义书签。
参考文献 .. (28)1 绪论1.1嵌入式系统开发的背景及意义嵌入式计算机系统的出现,是现代计算机发展史上的里程碑。
嵌入式系统诞生于微型计算机时代,于通用计算机的发展道路完全不同,形成了独立的单芯片的技术发展道路。
(完整word版)基于ARM看门狗程序设计
课程结业实验报告课程名称:嵌入式系统设计报告题目:基于 ARM的看门狗程序设计专业班级:通信 1601 班学号:学生姓名:指导教师:2021年6月20日看门狗实验1实验目的(1)认识 WATCHDOG 的作用;(2)掌握 WATCHDOG 准时器的使用方法。
2实验内容(1)编程增加看门狗功能,观察看门狗作用;(2)编程实现看门狗喂狗。
3实验基础知识(1)看门狗功能:嵌入式系统运转时受外面搅乱或系统错误,程序有时会出现“跑飞〞,以致整个系统瘫痪。
为防范这一现象的发生,在对系统牢固性要求较高的场合经常要参加看门狗电路〔 WATCHDOG〕。
看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运转。
(2)看门狗工作原理:设本系统程序完满运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp, 在程序运转一周后就更正准时器的计数值,只要程序正常运转,准时器就不会溢出,假设由于搅乱等原因是系统不能够在Tp 时辰更正准时器的数值,准时器将在Ti 时辰溢出,惹起系统复位,使系统得以重新运转,从而起到监控的作用在一个完满的嵌入式系统中或单片机小系统中平时都有看门狗准时器,且一般集成在办理器芯片中,看门狗实质上就是一个准时器,知识它在期满后将自动惹起系统复位。
〔3〕看门狗准时器计数值:输入到计数器的时钟周期t_watchdog =1/(PCLK/Prescaler value + 1)/ Division_factor)看门狗的准时周期T = WTCNT * t_watchdog〔4〕看门狗准时器存放器控制存放器〔 WTCON 〕数据存放器〔 WTDAT 〕计数器存放器〔 WTCNT 〕(1)新建一个工程 watchdog,增加相应的文件,并更正 watchdog 的工程设置;创立并参加到工程watchdog 中,局部参照代码以下:/* functions */void rtc_tick_isr(void) __attribute__ ((interrupt("IRQ")));;void rtc_int_isr(void) __attribute__ ((interrupt("IRQ")));;// 设置存放器参数#define WDT_ENABLE(0x01<<5)#define WDT_INT_ENABLE(0x01<<2)#define WDT_RST_ENABLE(0x01<<0)#define WDT_CLK_SEL(0X3<<3)/* 1/128 */#define WDT_PRE_SCALER((PCLK/1000000-1)<<8)/* 49void watchdog_init(){rWTCNT = 8448 * 2;/* 设置看门狗初始值*/rWTCON = WDT_ENABLE | WDT_RST_ENABLE | WDT_CLK_SEL | WDT_PRE_SCALER;/*翻开看门狗*/}void rtc_set_date(st_date* p_date){rRTCCON = 0x01;rBCDYEAR = p_date->year;rBCDMON= p_date->mon;rBCDDAY= p_date->day;rBCDDATE = p_date->week_day;rBCDHOUR = p_date->hour;rBCDMIN= p_date->min;rBCDSEC = p_date->sec;rRTCCON = 0x00;}{ ⋯}void rtc_tick_init( char tick ){Irq_Request(IRQ_TICK, rtc_tick_isr);rRTCCON= 0x0;//No reset[3], Merge BCD counters[2], BCD clock select XTAL[1], RTC Control disable[0]rTICNT= (tick&0x7f)|0x80;/*TICK中断使能,周期(1+tick)/128秒*/Irq_Enable(IRQ_TICK);}void Main(void){int old_index ;st_date m_date;/*配置系*/ChangeClockDivider(1,1);// 1:2:4ChangeMPllValue(0xa1,0x3,0x1);/* 中断初始化*/Isr_Init();/* 初始化端口*/Port_Init();/* 初始化串口*/Uart_Init(0,115200);Uart_Select(0);/* 置告警的及方式,0x41 表示使能RTC 告警,以及使能秒告警*/rtc_alarm_set(&m_date, 0x41);rtc_tick_init(127)watchdog_init();old_index = led_index;PRINTF(" 请在 2 秒内喂狗,否那么系统将在约 2 秒后复位 \n\n");while(1){if(old_index != led_index)/* 每隔一秒更新一次数据*/ {rtc_get_date(&m_date);old_index = led_index;}};}void rtc_tick_isr(void){Irq_Clear(IRQ_TICK);/* 去除 TICK 中断*/*((U8*) 0x10000006) = 0x00;*(unsigned char*)0x10000004 = seg7table[led_index%10];led_index++;/* 喂狗*/rWTCNT = 8448 * 2;}(2) 注意设置运转设备,如图 1.1 所示。
13 第十三讲 ARM看门狗及掉电模式实验----手把手教你学ARM之LPC2103入门篇
WDT的程序设计
见用户手册225页。 见程序的设计。
掉电模式
功率控制 LPC2101/2102/2103 支持两种低功耗模式:空闲模式和掉 电模式。 在掉电模式中,振荡器停振,芯片没有任何的内部时钟。处理 器状态和寄存器、外设寄存器和内部 SRAM 的值在掉电模式 下保持不变。芯片输出管脚的逻辑电平保持静态。通过复位或 特定的不需要时钟还可工作的中断可终止掉电模式并恢复正常 操作。由于芯片所有动态的操作都被暂停,掉电模式使芯片消 耗的功率降低到几乎为零。 在空闲模式中,指令的执行被暂停,直到产生复位或中断为止。 在空闲模式下外围功能继续工作并可产生中断唤醒处理器。空 闲模式使处理器自身、存储器系统和相关的控制器以及内部总 线不再消耗功率。 外设的功率控制特性允许关闭单独的不需要使用的外设,这样 可进一步降低功耗。
LPC210X内置的WDT
看门狗定时器的用途是使微控制器在进入错误状态经过一段时 间后复位。当看门定时器器使能时,如果没有在预先确定的时 间内“喂”看门狗,它将会产生一次系统复位。 特性 如果没有周期性重装,则产生片内复位 支持调试模式 由软件使能,但要求禁止硬件复位或看门狗复位/中断 错误/不完整的喂狗时序会导致复位/中断(如果使能) 具有标志位以指示看门狗复位 带内部预分频器的 32 位可编程定时器 可选择时间周期:(t *256*4) ~ (t*2^32*4),可选值为 t(pclk)*4的倍数。
手把手教你学ARM 手把手教你学
——之LPC210x入门篇
主
讲: 何
呈
策 2009年 1月 年 月
第十三讲 ARM看门狗及掉电模式实验
知识要点:
ARM的看门狗程序设计 ARM的掉电模式程序设计
看门狗
cortex M3 arm-watchdog程序解析
看门狗定时器(WDT)✓王伟杰目录漫谈看门狗定时器1看门狗定时器试验程序解析看门狗定时器试验程序调试WatchDog 库函数2✓漫谈看门狗定时器1.看门狗定时器概述嵌入式应用中,微控制器必须可靠工作,即使进入错误状态,系统也可自动恢复。
看门狗定时器可使微控制器在进入错误状态(例如程序跑飞或死锁)后的一定时间内复位。
2.看门狗定时器原理ü其原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作,如果系统出错,喂狗间隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使微控制器复位。
ü 3.看门狗定时器的“二次超时”特性ü当32位计数器在使能后倒计数到0状态时,看门狗定时器模块产生第一个超时信号,并产生中断触发信号。
在发生了第一个超时事件后,32位计数器自动重装并重新递减计数。
如果没有清除第一个超时中断状态,则当计数器再次递减到0时,且复位功能已使能,则看门狗定时器会向处理器发出复位信号。
如果中断状态在32位计数器到达其第二次超时之前被清除(即喂狗操作),则自动重装32位计数器,并重新开始计数,从而可以避免处理器被复位。
4.如何正确使用看门狗看门狗真正的用法应当是:在不用看门狗的情况下,硬件和软件经过反复测试已经通过,而在考虑到在实际应用环境中出现的强烈干扰可能造成程序跑飞的情况时,再加入看门狗功能以进一步提高整个系统的工作可靠性。
在调试自己的系统时,先不要使用看门狗,待完全调通已经稳定工作了,最后再补上看门狗功能。
可见,看门狗只不过是万不得已的最后手段而已。
函数WatchdogEnable( )函数WatchdogEnable( )的作用是使能看门狗。
该函数实际执行的操作是使能看门狗中断功能,即等同于函数WatchdogIntEnable( )。
中断功能一旦被使能,则只有通过复位才能被清除。
因此库函数里不会有对应的WatchdogDisable( )函数。
功能使能看门狗定时器原型void WatchdogEnable(unsigned long ulBase)参数ulBase:看门狗定时器模块的基址,取值WATCHDOG_BASE返回无函数WatchdogResetEnable( )函数WatchdogResetEnable( )使能看门狗定时器的复位功能,一旦看门狗定时器产生了二次超时事件,将引起处理器复位。
基于ARM平台的门禁设计方案
基于ARM平台的门禁设计方案门禁系统在现代社会中广泛应用,用于保护建筑物、公司、商店等场所的安全。
而基于ARM平台的门禁设计方案可以将传统的门禁系统与智能化技术相结合,提高系统的安全性和便利性。
在硬件设备方面,门禁系统主要包括门禁控制器、读卡器和电锁等组件。
门禁控制器是门禁系统的核心部件,负责控制门禁设备的工作。
基于ARM平台的门禁控制器具有处理能力强、稳定性好和功耗低的特点。
读卡器用于读取用户的身份信息和权限,可以采用RFID、指纹识别、人脸识别等技术。
电锁用于控制门的开关,可以通过电磁和电子方式实现。
此外,门禁系统还可以加入其他组件如摄像头、报警器等,以提高系统的安全性。
在软件系统方面,门禁系统需要借助ARM平台的操作系统进行管理和控制。
通过软件系统可以实现对门禁设备的配置、权限管理、报警处理等功能。
门禁系统可以与其他智能设备如监控系统、报警系统等进行联动,实现全方位的安全防护。
同时,门禁系统还可以与网络相连,实现远程监控和管理。
通过手机APP或网页端,用户可以实时查看门禁记录、设置权限、开关门禁,方便快捷。
1.处理能力强:ARM处理器具有高性能和较低的功耗,能够满足门禁系统对处理能力的需求。
同时,ARM平台可以通过升级处理器等方式提供更高的性能。
2.稳定可靠:ARM处理器拥有较好的稳定性和可靠性,能够长时间稳定工作。
门禁系统对稳定性要求较高,ARM平台能够满足这一需求。
3.低功耗:门禁设备通常需要长时间运行,对功耗要求较低。
ARM处理器采用先进的制程工艺和功效优化技术,能够提供较低的能耗。
4.灵活可扩展:基于ARM平台的门禁系统可以灵活地配置和扩展。
用户可以根据具体需求选择适合的硬件组件和软件系统,实现定制化的门禁方案。
5.可远程管理:基于ARM平台的门禁系统可以通过网络实现远程管理。
用户无需现场操作,即可实现监控、配置、权限管理等功能,提高了管理效率。
总之,基于ARM平台的门禁设计方案能够提供安全可靠的门禁系统,实现对建筑物、公司、商店等场所的安全管理。
12.3.3 Watchdog实验程序_ARM嵌入式C编程标准教程_[共2页]
第12章 看门狗(Watchdog)电路291║3.实验内容编写S3C2410处理器的Watchdog控制程序。
4.实验原理这里主要测试Watchdog的定时器功能,程序预分频值Prescaler value = PCLK/1000000-1;分频因子为128;看门狗时钟周期=1M/128 = 7812;允许中断;看门狗超时复位,每秒中断一次,10秒后结束。
看门狗的定时周期= WTCNT × t_Watchdog =1M/128×1/ ( PCLK/ ( Prescaler value +1 ) /Division_ factor)=1M/1281×1/ ( PCLK/(Prescaler value + 1 ) /128 ),因Prescaler value + 1= PCLK/100000代入上式;看门狗的定时周期=1s。
12.3.2 实验操作(1)连接UART0和PC机的串口。
(2)连接JTAG和PC机的并口。
(3)在PC机上运行Windows自带的超级终端端串口通信程序(设波特率115200、1位停止位、1位启动位、无校验位、无硬件流控制);或者使用其他串口通信程序。
(4)运行Embest IDE开发环境,建立watchdog_test.pjf项目,在项目中加入socrce_files、common_src、common_inc、misc文件夹。
在socrce_files夹中加入watchdog_test.c、和main.c,具体做法同4.6.1节。
(5)仿4.6.1节,对项目进行设置,编译链接工程。
(6)点击IDE的“Debug”菜单,选择“Remote Connect”项或“F8”键,远程连接目标板。
(7)点击IDE的“Debug”菜单,选择“Download”下载调试代码到目标系统RAM中。
(8)点击“Debug”菜单“Go”或“F5”键运行程序。
(9)在超级终端上显示:Embest Edukit-Ⅲ Evaluation BoardWatchDog Timer Test Example10 seconds:1s 2s 3s b4s 5s 6s 7s 8s 9s 10sO.K12.3.3 Watchdog实验程序Watchdog实验程序代码如下://--------------------------------------------------------------------------- // 主程序。
看门狗系统的设计
福建农林大学金山学院《嵌入式系统原理及应用》课程设计报告设计题目看门狗系统的设计专业年级 13级电子科学与技术姓名******学号成绩2016 年 6月28日看门狗系统的设计学号:136711069 姓名:江建淡摘要:在嵌入式应用中,CPU必须可靠工作,系统由于种种原因,程序运行时会不按指定指令运行,导致死锁,系统无法运行下去,这时需能使系统复位即可使程序重新投入运行。
看门狗(Watch Dog)技术就是实现崩溃系统的自动恢复,保证系统的稳定性。
一、课程设计目的(1)了解WATCHDOG的作用;(2)掌握WATCHDOG的使用方法。
二、课程设计内容(1)熟悉嵌入式开发环境的建立和使用(2)演绎看门狗的功能三、设计内容看门狗WDT的基本原理:设某系统程序完整运行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序运行一周后就重新设置定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因使系统不能在Tp时刻修改定时器的计数值,定时器将在Ti时刻溢出,引发系统复位,是系统得以重新运行,从而起到监控作用。
看门狗定时器的组成框图它唯一的时钟源MCLK,内部有8位预分频器(由WTCON[15:8]选择,最大28—1)将MCLK首次分频,通过与分屏器分频的值称为预分频值,然后按照16、32、64和128的系数通过多路选择开关(MUX)进行二次分频,这次分频的值称为分频系数,在看门狗定时器的控制寄存器作用下(WTCON[4:3])选择所需分频系数,得到WTD计数所需时钟,通过内部递减计数器(16位)WTC减法计数,当没有加以干预,计数到0时,产生中断输出或产生复位信号RESET使系统复位。
(如下看门狗定时器的组成框图)ARM7TDMI-S是一个通用的32位微处理器,它可提供高性能和低功耗。
ARM 结构是基于精简指令集计算机(RISC)原理而设计的。
指令集和相关的译码机制比复杂指令集计算机要简单得多。
基于ARM的门禁系统设计
基于ARM的门禁系统设计引言门禁系统作为一种安全保障设备,广泛应用在各类公共场所和机构中。
基于ARM(Advanced RISC Machine)的门禁系统设计,是一种使用ARM架构的处理器作为控制核心,实现门禁控制和安全管理的系统。
本文将探讨基于ARM的门禁系统的设计原理、系统组成和关键技术。
设计原理基于ARM的门禁系统主要由三个组成部分构成:门禁读卡器、控制器和门锁。
读卡器用于读取用户身份信息,控制器用于对用户身份进行验证并控制门锁的开关,门锁负责门的实际开关操作。
整个系统的设计原理是通过读卡器获取用户身份信息,控制器进行验证,验证通过后控制门锁开启。
基于ARM的门禁系统由以下几个组成部分构成:1. 门禁读卡器门禁读卡器是系统的输入设备,用于读取用户的身份信息。
读卡器根据不同的技术采用不同的读取方式,如刷卡、感应等。
读卡器通过接口将读取到的用户身份信息传递给控制器进行下一步的验证。
2. 控制器控制器是系统的核心部件,采用ARM架构的处理器作为控制核心。
控制器负责对读卡器读取到的用户身份信息进行验证,验证通过后,控制器向门锁发送开锁信号,使门锁开启。
控制器还可以与其他外部设备进行通信,以实现系统的扩展功能,如与监控摄像头进行联动,实现门禁监控等。
门锁是系统的输出设备,负责实际的门控制操作。
门锁能够通过控制器发送的开锁信号进行门的开启和关闭操作。
门锁的种类繁多,有电子锁、电磁锁、指纹锁等。
4. 用户管理系统用户管理系统用于管理门禁系统中的用户信息。
用户信息包括用户身份信息、权限等级等。
用户管理系统可以与控制器进行通信,通过控制器更新用户信息或获取用户权限等。
关键技术基于ARM的门禁系统设计涉及到多项关键技术,包括:1. ARM架构处理器选型ARM架构是一种低功耗、高性能的处理器架构,适合嵌入式系统应用。
在门禁系统设计中,需要选择适合的ARM处理器作为控制器的核心。
选择合适的ARM处理器可以提高门禁系统的性能和稳定性。
基于ARM的门禁系统设计
基于ARM的门禁系统设计摘要随着人类生活水平、认知水平和人们对安防要求的不断提高以及工业自动化的蓬勃发展,智能化管理已经走进了人们的社会生活,而在智能化管理中,门禁监控系统得到了越来越多的应用,门禁,又称出入管理控制系统,是一种管理人员进出的数字化管理系统。
但传统的门禁监控系统一般采用门禁控制和视频图片摄录相分离的实现办法,这给现场布线带来了很多的不便,同时其成本也会大大提高。
所以,设计稳定性高、保密性强和易于扩展的较通用型门禁系统具有重要的实际意义。
整个系统的设计采用具有丰富多片内外设的 LPC2368 ARM为微控制器,选用 ZLG522S/LT 读卡模块为读卡器(使用 Mifare 卡),并采用 HUIGANG 继电器作为门锁开关,同时有门状态指示灯。
系统通过 RS-485 总线与上位机进行通信。
该系统具有按用户与时间权限刷卡开门和记录功能、添加用户功能、设置时间权限和考勤时间段,并能将记录信息通过SD 卡导出。
该电子门禁系统具有实际应用中的单门门禁考勤系统的主要功能,并具有稳定性、可靠性,保密性强和人机界面友好的优点。
关键词:ARM 微控制器,读卡模块,RS-485,SD 卡概述本设计皆在完成一个管理人员进出的数字化出入管理控制系统。
在现今的社会生活中,人们已经逐渐进入并融入到了数字化电子化的生活,社会的各个方面都已经实现或基本实现了数字化,门禁系统作为人们生活中必不可少的管理类应用,在人类的工作中显得尤为的重要,而对于这样一个应用,在这样一个大的背景下,实现其数字化与电子化是十分必要的,智能考勤系统基于现代电子与信息技术,利用智能卡或指纹等生物信息的唯一性来对员工上下班进行现代化高效管理,在各厂矿、机关、银行等场合已广泛应用并成为单位管理现代化和信息化的标志。
但目前很多门禁系统的核心控制单元主要依赖单片机来实现,它虽然也能完成相应的基本功能,但其扩展能力有限,在性能和存储容量等方面已不能很好地满足人们的要求,然而,随着嵌入式技术的不断发展,特别是基于ARM 处理器的嵌入式系统由于其可扩展性强、稳定性高、功耗低、性能和价格比较合理等特点已在实际生活中得到了越来越多的应用。
基于ARM看门狗程序设计
.课程结业实验报告课程名称:嵌入式系统设计报告题目:基于ARM的看门狗程序设计专业班级:学号:班1601通信学生姓名:指导教师:20 月年2017 6 日...看门狗实验1 实验目的(1) 了解WATCHDOG的作用;(2) 掌握WATCHDOG定时器的使用方法。
2 实验内容(1) 编程添加看门狗功能,观察看门狗作用;(2) 编程实现看门狗喂狗。
3 实验基础知识(1) 看门狗功能:嵌入式系统运行时受外部干扰或系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。
为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路(WATCHDOG)。
看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运行。
(2) 看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp, 在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp时刻修改定时器的数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动引起系统复位。
(3)看门狗定时器计数值:输入到计数器的时钟周期t_watchdog =1/(PCLK/Prescaler value + 1)/Division_factor)看门狗的定时周期T = WTCNT * t_watchdog(4)看门狗定时器寄存器控制寄存器(WTCON)数据寄存器(WTDAT)计数器寄存器(WTCNT)4 实验步骤...(1) 新建一个工程watchdog,添加相应的文件,并修改watchdog的工程设置;创建watchdog.c并加入到工程watchdog中,部分参考代码如下:/* functions */void rtc_tick_isr(void) __attribute__ ((interrupt(IRQ)));;void rtc_int_isr(void) __attribute__ ((interrupt(IRQ)));;//设置寄存器参数#define WDT_ENABLE (0x01<<5)(0x01<<2) #define WDT_INT_ENABLE#define WDT_RST_ENABLE (0x01<<0)#define WDT_CLK_SEL(0X3 /* 1/128 */<<3)#define WDT_PRE_SCALER ((PCLK/1000000-1) <<8) /* 49void watchdog_init(){/* rWTCNT = 8448 * 2;设置看门狗初始值*/rWTCON = WDT_ENABLE | WDT_RST_ENABLE | WDT_CLK_SEL | WDT_PRE_SCALER; /* 打开看门狗*/}void rtc_set_date(st_date* p_date){rRTCCON = 0x01;rBCDYEAR = p_date->year;rBCDMON = p_date->mon;rBCDDAY = p_date->day;rBCDDATE = p_date->week_day;rBCDHOUR = p_date->hour;rBCDMIN = p_date->min;rBCDSEC = p_date->sec;rRTCCON = 0x00;}void rtc_get_date(st_date* p_date)...{…}void rtc_tick_init( char tick ){Irq_Request(IRQ_TICK, rtc_tick_isr);rRTCCON = 0x0; //No reset[3], Merge BCD counters[2], BCD clock select XTAL[1], RTC Control disable[0]rTICNT = (tick&0x7f)|0x80; /*TICK 中断使能,周期为(1+tick)/128秒*/Irq_Enable(IRQ_TICK);}void Main(void){int old_index ;st_date m_date;*//* 配置系统时钟ChangeClockDivider(1,1); // 1:2:4// FCLK=202.8MHz ChangeMPllValue(0xa1,0x3,0x1);*//* 中断初始化Isr_Init();/* 初始化端口*/Port_Init();/* 初始化串口*/Uart_Init(0,115200);Uart_Select(0);/* 设置告警的时间及方式,0x41表示使能RTC告警,以及使能秒时钟告警*/ rtc_alarm_set(&m_date, 0x41);rtc_tick_init(127)*/打开看门狗复位功能/*...watchdog_init();old_index = led_index;剐义?尨请在2秒内喂狗,否则系统将在约2秒后复位\n\n);while(1){if(old_index != led_index) /* 每隔一秒更新一次数据*/{rtc_get_date(&m_date);old_index = led_index;}};}void rtc_tick_isr(void){Irq_Clear(IRQ_TICK); /* 清除TICK中断*/*((U8*) 0x10000006) = 0x00;*(unsigned char*)0x10000004 = seg7table[led_index_x0010_];led_index++;/* 喂狗*/rWTCNT = 8448 * 2;}(2) 注意设置运行设备,如图1.1所示。
ARM+Linux下看门狗应用
Design Ideas
信号,导致CPU重启。
由于成本的原因,此款看门狗IC的定时复位间隔时间已经定死,不能由CPU设置。
我们无法通过更改看门狗的喂狗间隔时间来满足CPU的启动要求。
1.6s。
因此需要关闭看门狗的复位输
出信号,以使CPU能完全启动。
改进电路
仔细阅读此看门狗I C的
Datasheet。
看门狗IC的框图如图2。
此看门狗IC内部包括三部分功能:
MR上有低电
一旦上述条件消失,RESET输
宽度的低电平信号。
因
MR管脚上后,
1.6s,低电平
的复位信号。
的输入电平低于1.25V时,
总结
采用图三所示电路,使看门狗IC
实现看门狗电路和上电复位电路两种
功能。
满足带操作系统的CPU启动时
间长,需通过电压跌落试验等要求。
也可以满足需要实现休眠功能要求的
图1 使用的看门狗电路图图2 ADM706内部框图图3 改进看门狗电路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程结业实验报告
课程名称:嵌入式系统设计
报告题目:基于ARM的看门狗程序设计专业班级:通信1601班学号:
学生姓名:
指导教师:
2017 年 6 月20 日
看门狗实验
1 实验目的
(1) 了解WATCHDOG的作用;
(2) 掌握WATCHDOG定时器的使用方法。
2 实验内容
(1) 编程添加看门狗功能,观察看门狗作用;
(2) 编程实现看门狗喂狗。
3 实验基础知识
(1) 看门狗功能:嵌入式系统运行时受外部干扰或系统错误,程序有时会出现“跑飞”,导致整个系统瘫痪。
为防止这一现象的发生,在对系统稳定性要求较高的场合往往要加入看门狗电路(WATCHDOG)。
看门狗的作用是当系统跑飞而进入死循环时,恢复系统的运行。
(2) 看门狗工作原理:设本系统程序完整运转一周的时间是Tp,看门狗定是周期是Ti,Ti>Tp, 在程序运行一周后就修改定时器的计数值,只要程序正常运行,定时器就不会溢出,若由于干扰等原因是系统不能在Tp时刻修改定时器的数值,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控的作用
在一个完整的嵌入式系统中或单片机小系统中通常都有看门狗定时器,且一般集成在处理器芯片中,看门狗实际上就是一个定时器,知识它在期满后将自动引起系统复位。
(3)看门狗定时器计数值:
输入到计数器的时钟周期t_watchdog =1/(PCLK/Prescaler value + 1)/ Division_factor)
看门狗的定时周期T = WTCNT * t_watchdog
(4)看门狗定时器寄存器
控制寄存器(WTCON)
数据寄存器(WTDAT)
计数器寄存器(WTCNT)
4 实验步骤
(1) 新建一个工程watchdog,添加相应的文件,并修改watchdog的工程设置;创建watchdog.c并加入到工程watchdog中,部分参考代码如下:
/* functions */
void rtc_tick_isr(void) __attribute__ ((interrupt("IRQ")));;
void rtc_int_isr(void) __attribute__ ((interrupt("IRQ")));;
//设置寄存器参数
#define WDT_ENABLE (0x01<<5)
#define WDT_INT_ENABLE (0x01<<2)
#define WDT_RST_ENABLE (0x01<<0)
#define WDT_CLK_SEL (0X3 <<3) /* 1/128 */
#define WDT_PRE_SCALER ((PCLK/1000000-1) <<8) /* 49
void watchdog_init()
{
rWTCNT = 8448 * 2; /* 设置看门狗初始值*/
rWTCON = WDT_ENABLE | WDT_RST_ENABLE | WDT_CLK_SEL | WDT_PRE_SCALER;
/* 打开看门狗*/
}
void rtc_set_date(st_date* p_date)
{
rRTCCON = 0x01;
rBCDYEAR = p_date->year;
rBCDMON = p_date->mon;
rBCDDAY = p_date->day;
rBCDDATE = p_date->week_day;
rBCDHOUR = p_date->hour;
rBCDMIN = p_date->min;
rBCDSEC = p_date->sec;
rRTCCON = 0x00;
}
void rtc_get_date(st_date* p_date)
{…}
void rtc_tick_init( char tick )
{
Irq_Request(IRQ_TICK, rtc_tick_isr);
rRTCCON = 0x0; //No reset[3], Merge BCD counters[2], BCD clock select XTAL[1], RTC Control disable[0]
rTICNT = (tick&0x7f)|0x80; /*TICK 中断使能,周期为(1+tick)/128秒*/
Irq_Enable(IRQ_TICK);
}
void Main(void)
{
int old_index ;
st_date m_date;
/* 配置系统时钟*/
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
/* 中断初始化*/
Isr_Init();
/* 初始化端口*/
Port_Init();
/* 初始化串口*/
Uart_Init(0,115200);
Uart_Select(0);
/* 设置告警的时间及方式,0x41表示使能RTC告警,以及使能秒时钟告警*/
rtc_alarm_set(&m_date, 0x41);
rtc_tick_init(127)
/* 打开看门狗复位功能*/
watchdog_init();
old_index = led_index;
PRINTF("请在2秒内喂狗,否则系统将在约2秒后复位\n\n");
while(1)
{
if(old_index != led_index) /* 每隔一秒更新一次数据*/ {
rtc_get_date(&m_date);
old_index = led_index;
}
};
}
void rtc_tick_isr(void)
{
Irq_Clear(IRQ_TICK); /* 清除TICK中断*/
*((U8*) 0x10000006) = 0x00;
*(unsigned char*)0x10000004 = seg7table[led_index%10];
led_index++;
/* 喂狗*/
rWTCNT = 8448 * 2;
}
(2) 注意设置运行设备,如图1.1所示。
图1.1 设置Devices
(3) 编译watchdog,下载程序并运行,通过超级终端看是否复位,实验结果如图1.2所示。
图1.2 实验结果
(4) 删除“喂狗”代码,查看运行结果,如图1.3所示。
图1.3 运行结果
5 实验总结
通过本次实验我进一步了解了看门狗的工作原理和功能,以及看门狗寄存器定时周期的计算方法,同时也对嵌入式系统设计有了更加广泛且深刻的认识。
基于arm的程序设计,我锻炼了自己的思考能力和实践能力,通过题目的选择和设计过程中,加强了我思考问题的完整性和实际生活联系的可行性,同时也培养了我们综合应用arm的能力,对arm的各种功能有了进一步的认识,还锻炼了我们个人查阅技术资料的能力,动手能力,发现问题,解决问题的能力,我受益匪浅。