单片机学习小组
登录
直播中
杨言
12年用户
555经验值
私信
关注
如何控制stm8s003核心板进行简单的IO输入输出/中断/窗口看门狗/全休眠功能?
开启该帖子的消息推送
单片机
核心板
如何控制stm8s003核心板进行简单的IO输入输出/中断/窗口看门狗/全休眠功能?
回帖
(1)
荣春梅
2022-2-21 09:48:18
实验目的 :控制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)
{
CLK_DeInit();//复位时钟寄存器
CLK_HSICmd(ENABLE);//使能内部高速时钟
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);//配置内部高速时钟(时钟分频器:4分频),系统时钟4MHz
CLK_ClockSecuritySystemEnable();//开启时钟安全系统
}
因为是要是用在halt mode下的唤醒功能 所以不能直接使用独立看门狗。窗口看门狗相较于之前使用的独立看门狗就显得(矫情)许多。因为
void MWWDG_Init(void)
{
/* 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 */
WWDG_Init(COUNTER_INIT, WINDOW_VALUE);//COUNTERINIT = 0x7f,WINDOW = 0x77
}
窗口看门狗就这个么一条初始化语句,但是超时的时间和喂狗的最短时间都是可以计算出来的。上面代码显示是看门狗超时时间为196.6ms,喂狗时间则要大于24.576ms 小于196.6ms之间。
4.Halt mode是最省电的模式,进入之前要将外设能关闭的都关闭,最好再喂一次购,中断不要关,因为要用中断来唤醒。
halt();//进入停机模式
//EXTI_DeInit (); /* 恢复中断的所有设置 */
//System_Init();//系统初始化函数
这样
实验目的 :控制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)
{
CLK_DeInit();//复位时钟寄存器
CLK_HSICmd(ENABLE);//使能内部高速时钟
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);//配置内部高速时钟(时钟分频器:4分频),系统时钟4MHz
CLK_ClockSecuritySystemEnable();//开启时钟安全系统
}
因为是要是用在halt mode下的唤醒功能 所以不能直接使用独立看门狗。窗口看门狗相较于之前使用的独立看门狗就显得(矫情)许多。因为
void MWWDG_Init(void)
{
/* 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 */
WWDG_Init(COUNTER_INIT, WINDOW_VALUE);//COUNTERINIT = 0x7f,WINDOW = 0x77
}
窗口看门狗就这个么一条初始化语句,但是超时的时间和喂狗的最短时间都是可以计算出来的。上面代码显示是看门狗超时时间为196.6ms,喂狗时间则要大于24.576ms 小于196.6ms之间。
4.Halt mode是最省电的模式,进入之前要将外设能关闭的都关闭,最好再喂一次购,中断不要关,因为要用中断来唤醒。
halt();//进入停机模式
//EXTI_DeInit (); /* 恢复中断的所有设置 */
//System_Init();//系统初始化函数
这样
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
核心板
A40I
核心板
IO
口操作的是一个
看门狗
芯片只要
输出
高低电平就可以了吗
2022-01-04
1686
如何对独立
看门狗
和
窗口
看门狗
进行
配置
2021-09-22
1543
独立
看门狗
和
窗口
看门狗
的
功能
框图和应用是什么
2021-08-05
1223
有关独立
看门狗
和
窗口
看门狗
的
简单
介绍
2021-09-18
1639
什么是
窗口
看门狗
?
窗口
看门狗
是怎么工作的?
2021-08-30
858
独立
看门狗
与
窗口
看门狗
概述
2021-09-26
1146
窗口
看门狗
和独立
看门狗
的区别在哪
2021-08-31
1338
stm32
窗口
看门狗
清
中断
问题如何解决
2020-06-09
3158
独立
看门狗
与
窗口
看门狗
的主要性能及
功能
有哪些?
2021-08-13
1892
独立
看门狗
和
窗口
看门狗
的原理分别是什么
2021-07-30
1058
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分