复位对系统的稳定性有很大的作用,有效地利用复位功能可以提高系统的稳定性和可靠性,本程序把开发板的电源断开,用外部的可调电源对其供电,慢慢上升电源的电压可以看到小灯的闪烁有变化(上电复位),慢慢的降低电源的电压可以看到小灯的闪烁发生变化,系统复位(掉电复位)。
//软件环境:IAR FOR STM8 V1.0
//作者:Nicole
//功能:复位功能的测试程序(上电复位和掉电复位)
//日期:2010.11.05
#include
#include
//时钟配置
void CLK_Configuration(void)
{
//CLK_ICKR = 0x08; //打开低速时钟
CLK_CKDIVR = 0x00;
}
//延时函数
void Delay(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=1000;j>0;j--);
}
}
//IO口配置,控制小灯
void GPIO_Init(void)
{
unsigned int i;
PD_DDR|=0x01; //PD0输出,其余保持原功能
PD_CR1|=0x01; //对应位设置为推挽输出
PD_CR2|=0x00; //输出最大频率为2Mhz
for(i=0;i<4;i++)
{
PD_ODR=0xff;
Delay(200);
PD_ODR=0xfe;
Delay(200);
}
}
void main(void)
{
CLK_Configuration(); // 开启外部时钟
GPIO_Init(); // 初始化端口
while(1)
{
PD_ODR = 0xff; //PD0为输出1,LED灭
Delay(1000);
PD_ODR = 0xfe; //PD0为输出1,LED灭
Delay(1000);
}
}
关键字:STM8S 上电 掉电复位
引用地址:
STM8S的上电/掉电复位
推荐阅读最新更新时间:2024-03-16 14:36
STM8S的TIM1定时器====总览
STM8S单片机内部集成了6个定时器模块,分别是高级控制型(TIM1)、通用型(TIM2、TIM3)和基本型(TIM4)。 高级控制型和通用型都是16位结构定时器,而基本定时器是8位结构。本文重点讲解TIM1类型定时器。 高级控制型定时器TIM1是STM8S208R单片机内部最强大的定时器,它是一个16位的自动装载计数器,可以实现向上、向下计数。计数的时钟可以软件选择片内系统时钟或外部时钟信号计数,并同过可编程的预分频器驱动。 TIM1定时器具有4个独立的捕捉/比较通道,可以实现基本的定时功能,测量输入信号的脉冲宽度、产生输出PWM波形功能。 TIM1带有互补输出、死区控制和中心对齐的PWM功能,可以应用与马达控制
[单片机]
为什么arm上电要关闭watchdog
1.这件事情发生在uboot初始化过程中 2. watchdog一般是一个硬件模块,其作用是,在嵌入式操作系统中,很多应用情况是系统长期运行且无人看守,所以难免或者怕万一出现系统死机,那就杯具了,这时,watchdog就会自动帮你重启系统。 那么其是如何实现此功能的呢?那么就要简单解释一下其实现原理了。 watchdog硬件的逻辑就是,其硬件上有个记录超时功能,然后要求用户需要每隔一段时间(此时间可以根据自己需求而配置)去对其进行一定操作,比如往里面写一些固定的值,俗称 喂狗 ,那么我发现超时了,即过了这么长时间你还不给偶喂食,那么偶就认为你系统是死机了,出问题了,偶就帮你重启系统。说白了就是弄个看家狗dog,你要
[单片机]
关于STM8S ADC脚与其它功能复用时的问题
之前写过一篇关于STM8S芯片GPIO脚复用AD功能后无法回到GPIO状态的小文,介绍STM8S芯片的ADC应用时相关施密特触发器未适时开关而导致的问题。 大致内容就是某一GPIO口被复用为AD输入脚做相关AD检测。之后,把该脚AD功能禁用掉,再配置切换为带下降沿触发的外部中断触发脚,让其作为芯片休眠唤醒脚。 奇怪的是,那样设置后根本没法唤醒。即使不做休眠,做好切换配置后,直接查看该脚的IDR位的电平,不管外部输入如何,发现对应IDR位始终提示为0. 后来找到原因是跟那个施密特触发器的配置有关。可能有人觉得该问题是钻牛角尖,其实,也不尽然。毕竟应用需求是五花八门的,遇到的问题往往也是五彩缤纷,问题不论大小折磨起人来也是不
[单片机]
STM8S库GPIO_ReadInputPin函数问题
ST官网推出了库函数操作,大大方便了用户,但是库函数有一些问题,例如 1.库函数GPIO_ReadInputPin问题 以下是ST文件读取指定IO口电平原型 BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin) { return ((BitStatus)(GPIOx- IDR & (uint8_t)GPIO_Pin)); } 当你在程序中调用 if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_7) == SET) { .................. } 你会发现你永远得不到你想要的! 原
[单片机]
vivo T系列首款机型T1x上架电商,或近期发布
今日有网友发现,名为 vivo T1x 的新机已经出现在了京东商城等平台,预计近期发布,可能也是一款备战双十一的产品。 有数码博主爆料称,T 系列定位偏向游戏性能方面,是 Z 系列的延续,相比面向女性用户的 S 系列相对更有性价比,但仍不及 X 系列和 NEX 系列,预计该机价位在 2000-2500 元之间。 IT之家曾报道,近日有多款 vivo 新机通过了国家 3C 认证,有消息称将包括 vivo T1x、Y71T、Y50T、S10e、iQOO Neo 5 活力版、iQOO Z5 Pro(或 iQOO Neo5s) 等。
[手机便携]
STM8S利用STVP方式进行IO复用分析
1 说明 STM8S的IO复用用程序代码配置起来比较麻烦,一般是操作flash来操作opTIon byte字节,配置寄存器更加麻烦,可以使用STM 标准外设驱动库来设置。本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置。 因为FLASH保存的数据是掉电不丢失的,先用STVP把OpTIon Bytes擦写好后,再用STVD仿真器烧写程序就可实现IO复用了。 程序方式配置IO复用见这里 2 配置流程 【step1】打开STVP软件 【step2】打开我们需要下载的xxx.s19文件,CTRL+F5(File-》Ram Exec) 【step3】配置需要复用的引脚 IO口的复用功能主要配置在于AFR0-A
[单片机]
STM8S之GPIO自学笔记
STM8S105C6T6 48个引脚 32KB Flash 封装:LQFP temp:-40~85 PA1~PA6,PB0~PB7,PC1~PC7,PD0~PD7,PE0~PE3,PE5~PE7,PG0,PG1, 一共38个通用I/O口。 GPIO寄存器 端口x输出数据寄存器(Px_ODR); 端口x输入数据寄存器(Px_IDR); 端口x输出数据方向(Px_DDR);0:输入模式 1:输出模式; 端口x控制寄存器1(Px_CR1); 当DDR=1;置0 模拟开漏输出;置1 推挽输出;(CR2位做输出摆率控制); 当DDR=0;置0 浮空输入;置1 上拉输入; 端口x控制寄存器2(Px_CR2); 当DDR=0;置0 禁止外部
[单片机]
上电时实现延时系统复位的IC
通过给晶体管增加一些电容、二极管和电阻,使用保持时间可调的复位IC,将纯手动复位转换为自动复位。 在大多数应用中, (手动复位)引脚通常与开关相连,为管理芯片制造手动复位信号。随后,在预先设定的有效延时时间后,其从低电平有效复位回到高电平状态。手动复位适用于大多数应用;然而,它需要人为干涉产生复位信号。在一些应用中,手动复位存在争议,因为系统每次上电时都要执行。 更进一步,包括嵌入式处理器在内的应用需要复位输出为保持高电平——也就是说,非有效——在应用复位或低有效之前的某个时期。如图1电路在设备上电时无需按下复位键的情况下,被证实是有效的,因为在复位的低信号到来之前,复位自动以预先设定的保持时间发生。 电路使
[模拟电子]