在前几篇文章,GPIO的使用:点亮LED!中只讲述了IO口的输出,并没有输入,因为IO作为输入我建议采用中断方式,可以大大减轻CPU的运行时间。最常用的就是按钮的功能了,当然还有和其他芯片通信的功能。
前篇文章讲过GPIO可以通过寄存器设置为中断输入。
配置模式DDRCR1CR2配置模式上拉电阻
输入000悬浮输入 OFF
010上拉输入ON
001中断悬浮输入 OFF
011中断上拉输入ON
输出100开漏输出 OFF
110推挽输出
1x1输出(最快速度10MHZ)
xxx真正的开漏输出未采用
这里我们选用PC3作为外部中断
void EXIT_GPIO_Init(void)
{
PC_DDR &= 0xf7;
PC_CR1 |= 0x08; // 将PC3设置成中断上拉输入
PC_CR2 |= 0x08;
EXTI_CR1 = 0x20; //PC设置为下降沿触发
}
这里需要注意的是,中断向量指定的是PC,也就是说如果有几个PC口都设置为中断的话,只要其中一个中断响应,就会进入同一个函数。
如果你有好几个按键在同一个port口的话,可以在进入中断函数之后做一个IO口状态的获取,判定哪个IO进行了中断,再对应相应的操作。
#pragma vector = EXIT_PORTC_vector //0x07
__interrupt void EXIT_PORTC_RQHandler(void) //中断服务函数
{
if((PC_IDR & 0x08)==0)
{
delay_nms(50); //延时50ms,消抖
if((PC_IDR & 0x08)==0) //再判断是否按下
{
while(!(PC_IDR & 0x08)); //松手检测
//TODO
}
}
}
由于使用了机械按钮,一般都会有一个机械抖动的过程,所以进入了中断函数之后,我们先做一个消抖处理,这样就可以判断按钮的状态,同时也防止抖动造成了多次中断函数的反复进入。最后加入松手检测,判定按钮动作完成。(TODO这里就可以加入你需要的操作了)
附上stm8s在IAR环境下的项目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。
http://download.csdn.net/detail/devintt/9454188
上一篇:stm8s开发(八) IIC的使用:IIC主机通信!
下一篇:STM8S 外部中断一直进解决方法
推荐阅读
史海拾趣
在20世纪的后半叶,ALCOA继续在技术上取得重大突破。例如,在40年代,公司采用N-40(Niagara)50kA中心下料预焙阳极电解槽技术为政府建造了铝冶炼厂。此外,公司还不断扩大海外业务,建立了全球性的生产和销售网络。这种全球布局使得ALCOA能够更好地满足不同地区的市场需求,也增强了公司的竞争力。
ALCOA,全称美国铝业公司,其发展历程可追溯至19世纪末。当时,铝在地球上蕴藏丰富,但提炼单质的铝却十分困难。年轻的查尔斯·霍尔(Charles Hall)发明了用电解方式生产单质铝的方法,并于1889年获得专利。随后,他与艾尔弗雷德·亨特(Alfred E. Hunt)船长合作,投资建厂,开始批量生产铝。这一技术创新不仅推动了铝产量的快速上升,还使得铝这种曾经比金子还贵的金属逐渐走进了人们的日常生活。
随着业务的不断扩展,Belden公司于1910年搬迁至芝加哥更大的区域,并在产品线上增加了橡胶绝缘电线。这一举措不仅扩大了公司的生产规模,也进一步丰富了产品种类,满足了市场的多样化需求。随后,百通工程师于1927年发明的软橡胶塞技术,进一步推动了公司的技术创新和业务拓展。
巨盛电子(Chesen)自创立之初,就坚持将技术创新作为公司的核心竞争力。在电子行业迅速发展的背景下,公司投入大量资源进行研发,成功推出了一系列具有领先技术水平的电子产品。这些产品不仅满足了市场对于高品质、高性能电子产品的需求,还通过创新功能赢得了消费者的青睐。巨盛电子凭借技术创新,逐渐在电子行业中崭露头角,成为市场的领导者。
ACP Optoelectronic Technology Co Ltd,在创立初期便专注于光电技术的研发。某年,公司研发团队成功开发出一种新型光电传感器,其性能远超当时市场上的同类产品。这一技术突破迅速吸引了行业内的关注,公司因此获得了大量订单,业绩迅速攀升。随着技术的不断完善和市场的不断拓展,ACP Optoelectronic Technology Co Ltd逐渐在光电领域崭露头角。
CT公司成立于电子行业的黄金时期,起初只是一个小型研发团队,专注于研发新型半导体技术。创始人凭借对技术的敏锐洞察和不懈追求,带领团队攻克了一个又一个技术难题。然而,资金短缺、市场竞争激烈以及技术迭代的快速性给初创期的CT公司带来了巨大的挑战。公司多次面临生死存亡的边缘,但创始人始终坚持技术创新的初心,不断寻求合作伙伴和投资,逐渐在市场中站稳了脚跟。
面向高性能、低成本型工业控制应用,英飞凌科技(Infineon Technologies)宣布推出基于TriCore架构的全新TC116x系列32位微处理器的两款样品。TC1161和TC1162微处理器集成了高性能66MHz CPU以及1M的嵌入式闪存和完整外设集,并采取了低成本的封装形式 ...… 查看全部问答∨ |
|
请教:计数不走,是哪的问题?单板有这些片子:74373(02 08 10 21 07 32 175 154 138 245 573),8155,12887,cy7c136,W78E516B,oks1235等。没用74193。液晶也正常。请高手指教一下。… 查看全部问答∨ |
我公司(北京英泰赛福软件技术有限公司www.qhitsf.com)欲招聘研发人员,要求熟练掌握51系列嵌入式软件,使用C、汇编语言进行编程,对ARM芯片有深入了解并应用ARM芯片进行过产品研发,薪金面议,有意请将简历发送到我公司邮箱(itsf@vip.sina.com)。… 查看全部问答∨ |
给把nk.nb0烧录到s3c2410板子上重启以后出现的情况,一直花屏 板子应该是没有问题的,因为用那个公司提供的nk.nb0文件的时候,是可以的 自己按照他公司提供的smdk2410 照说明 弄了个nk。nb0文件烧到板子里,重启就出现下面的情况 VIVI bootloader 0.1.4 (chris@yangchu.com) (gcc version 2.95.3 20010315 (r ...… 查看全部问答∨ |
小子又迷茫了,还是描述下问题,首先在MPSENDPACKETS对发往某一地址的所有TCP包进行加密,也修改过校验和。然后在PTRECEIVE中进行反向解密,最终调用NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1)将包含解密后数据的新建 ...… 查看全部问答∨ |
编译没有问题,但是链接有好几个如下的问题: .\\Object\\ucos_lwip.axf: Error: L6406E: No space in execution regions with .ANY selector matching rit128x96x4.o(.data). .\\Object\\ucos_lwip.axf: Error: L6406E: No space in execution r ...… 查看全部问答∨ |
|
我在vmware上安装RHEL5时,出现如下错误提示。我的操作系统是win7的,这是什么原因啊??谢谢 [ 本帖最后由 江汉大学南瓜 于 2012-4-13 18:01 编辑 ]… 查看全部问答∨ |
提到LED驱动精准度通常会想到恒流误差,其实驱动精度并不仅仅限于电流精度一项。LED是一款典型的电流驱动型器件,精准控制LED驱动电流,可决定包括光效率、电源效率、散热和产品亮度等在内的许多参数。驱动LED主要在于控制它的电流。无论是直接增、 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 有奖直播预报名|与英飞凌一同探寻网络摄像机的黑科技
- 【EE团】不到1折的零头价格坐享价值750元芯片!
- 逛村田在线云展厅,看干货,闯关赢好礼!
- 4小时实战+剖析:TI工程师教你快速上手 各种无线产品开发 (限量$14售CC1352R1无线开发板,助你参与动手实验)
- 免费申请英飞凌FMCW雷达解决方案Position2Go,角度,距离,速度,运动方向检测一板搞定!
- 下载Vishay最新通信解决方案 赢取超赞移动电源
- ADI & WT ·世健 MCU 痛点问题探索季 ——第二站:直播 | MCU应用难题全力击破!
- 如何“配齐”脉冲负载的电源设计需求
- 看展闯关赢好礼|MPS 芯云展厅与您不见不散!
- 【主题月活动】小电阻,大智慧!
- 夏普与NHK联合研发可卷曲OLED屏幕,要与LG抗衡?
- 特斯拉电池系统或将升级?改名叫“电池系统模块"
- stm32 驱动DS18B20温度传感器
- ARM7与ARM9的区别以及ARM,FPGA,DSP的特点和区别是什么?
- Marvell ThunderX2解决方案让Microsoft Azure开发更成熟
- 围巾也智能化?小米:没有不可能
- 【STM32H7教程】第6章 STM32H7工程模板建立(IAR8)
- 【STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)
- 【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈
- 【STM32H7教程】第8章 STM32H7的终极调试组件Event Recorder