2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > STM8S系列基于IAR开发外部中断(EXTI)按键检测示例

STM8S系列基于IAR开发外部中断(EXTI)按键检测示例

时间:2020-03-28 18:54:21

相关推荐

STM8S系列基于IAR开发外部中断(EXTI)按键检测示例

STM8S系列基于IAR开发外部中断(EXTI)按键检测示例

📌相关篇《STM8S903K3T6C基于ST Visual Develop开发外部中断示例》

📓功能说明

🎉PC1作为按键外部中断输入引脚,PD7作为LED指示灯。通过控制PC1按键来控制LED亮灭。

🔰 STM8 I/O 口引脚配置表 📖外部中断端口以及引脚

📜外部中断向量表

注意事项

IAR开发环境下,中断向量地址需要+2

🌴功能函数实现

🌿按键配置函数

/*************************************************************************** 函数名:Buttom_conf* 描述 :按键配置函数* 输入 :无* 输出 :无* 返回 :无 * 调用 :外部调用 *************************************************************************/void Buttom_conf(void){PC_DDR &=0xFD;/*设置PC1数据方向寄存器 1为输出,0为输入*/PC_CR1|=0x02;/*设置PC1上拉输入*/PC_CR2|=0x02;/*设置PC1中断*/EXTI_CR1 &= (uint8_t)(~MASK_EXTI_CR1_PDIS);EXTI_CR1 |= 0x20;/*设置为下降沿触发中断*/}

🌿led输出引脚

/*************************************************************************** 函数名:LED_conf* 描述 :STM8S* 输入 :无* 输出 :无* 返回 :无 * 调用 :外部调用 *************************************************************************/void LED_conf(void){PD_DDR|=0x80; /* 设置PD7数据方向寄存器 1为输出,0为输入*/PD_CR1|=0x80; /* 设置PD7推挽输出 */ }

🌿中断服务函数

#pragma vector=7__interrupt void EXTI_PORTC_IRQHandler(void){if(PC1_In == 0)PD7_out =~PD7_out;//PC1外部中断输入引脚}

📑main函数

/* Includes ------------------------------------------------------------------*/#include "clk_conf.h"#include "led.h"#include "key_exti.h"/* Private defines -----------------------------------------------------------*//* Private function prototypes -----------------------------------------------*//* Private functions ---------------------------------------------------------*/int main(void){/* Infinite loop */__disable_interrupt();/*设置内部高速时钟16M为主时钟*/ Clk_conf();LED_conf();Set_Led_On();Buttom_conf();EnableInterrupt;while(1){/* 添加你的代码 */ }}

📚程序源码

链接:/s/188ydSgGG14mUGZW9MMZxMg 提取码:4arl

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。