完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
实验目的 :控制stm8s003核心板进行简单的IO输入输出、中断、窗口看门狗,全休眠功能
0.先看手册 PB4和PB5引脚因为内部没有上拉电阻,所以不能输出高电平只能浮空输入。浮空输入也有问题 因为它只能检测到引脚是低电平还是非低电平,不能检测是高电平还是低电平。这也就导致了把此引脚作为外部中断的触发引脚不能是上升沿,只能是下降沿,不过不同的板子有的下降沿可以触发有的不能触发。可靠的方案还是换引脚或者加个上拉电阻吧。(╯‵□′)╯︵┻━┻ 1.普通的IO输入输出 GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST); /* 配置GPIC PIN3脚为推挽输出 */ GPIO_WriteHigh(GPIOC, GPIO_PIN_3); /*引脚拉高 */ 2.中断 (关总中断 --设置–打开中断) GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_IT); /* 配置GPIA PIN3脚为外部中断脚 / EXti_SetExtIntSensitivity(EXTI_PORT_GPIOA,EXTI_SENSITIVITY_FALL_ONLY);/ 配置外部中断 下降沿*/ EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY); /*设置高级中断触发方式 */ 中断是上面两个函数一起使用才会生效。 3.窗口看门狗 WWDG 因为看门狗和时钟往往有着密不可分的关系,首先时钟要先确定 这里使用的内部高速的16Mhz时钟 4分频为4Mhz. void Clk_Init(void) {undefined CLK_DeInit();//复位时钟寄存器 CLK_HSICmd(ENABLE);//使能内部高速时钟 CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);//配置内部高速时钟(时钟分频器:4分频),系统时钟4MHz CLK_ClockSecuritySystemEnable();//开启时钟安全系统 } void MWWDG_Init(void) {undefined /* WWDG configuration: WWDG is clocked by SYSCLK = 4MHz */ /* Watchdog Window = (COUNTER_INIT - 63) * 1 step = 64 * (12288 / 4Mhz) = 196.6 ms / / Non Allowed Window = (COUNTER_INIT - WINDOW_VALUE) * 1 step = 8 * 1 step = 8 * (12288 / 4Mhz) = 24.576 ms 1 2 3 */ WWDG_Init(COUNTER_INIT, WINDOW_VALUE);//COUNTERINIT = 0x7f,WINDOW = 0x77 } 窗口看门狗就这个么一条初始化语句,但是超时的时间和喂狗的最短时间都是可以计算出来的。上面代码显示是看门狗超时时间为196.6ms,喂狗时间则要大于24.576ms 小于196.6ms之间。 4.Halt mode是最省电的模式,进入之前要将外设能关闭的都关闭,最好再喂一次购,中断不要关,因为要用中断来唤醒。 halt();//进入停机模式 //EXTI_DeInit (); /* 恢复中断的所有设置 */ //System_Init();//系统初始化函数 |
|
相关推荐
4 个讨论
|
|
|
STM8S003引脚坑(开发过的人都知道)
不错哦 ,好方案好分享,+ |
|
|
|
|
|
|
|
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 17:46 , Processed in 1.196879 second(s), Total 67, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
269