stm32(2):OLED屏幕和外部中断

OLED,即有机发光二极管(Organic Light-Emitting Diode)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

OLED的原理涉及I2C协议等若干内容,目前不做了解。

网上有很多封装好的OLED驱动模块,利用他们的函数可以轻易显示汉字英文和符号。以江协科技的模块为例:

OLED_ShowString(1,1,"Hello world!");
OLED_ShowSignedNum(2,1,-12345,5);


 

外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。

中断之间可以嵌套。

多个中断之间存在抢占优先级和响应优先级,抢占优先级高的可以在其他中断进行的时候嵌套中断。响应优先级高的可以在多个中断按顺序优先执行。在优先级相等时存在默认的顺序。

使用外部中断可以自发地及时的接受外界的变化并做出响应。

外部中断的触发模式分为上升沿响应触发和下降沿响应触发,以方波信号为例,方波的上升信号为上升沿,下降信号为下降沿。

配置外部中断的思路和配置GPIO类似,调用库函数并给结构体赋值,大致过程如下:
1、配置AFIO(复用输入输出口,其值为自选的GPIO子口),配置GPIO,选择一条线路作为复用输入输出口的输入。

2、配置EXTI边沿检测。

3、配置NVIC中断。

例码如下

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIO和AFIO的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;  //配置GPIO
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
	
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource13);//选择配置好的GPIO口作为EXTI需要的复用输入输出口
	
	EXTI_InitTypeDef EXTI_InitStructure;//配置EXTI,下降沿触发
	EXTI_InitStructure.EXTI_Line=EXTI_Line13;
	EXTI_InitStructure.EXTI_LineCmd=ENABLE;
	EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
	EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
	EXTI_Init(&EXTI_InitStructure);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//优先级分组
	
	NVIC_InitTypeDef NVIC_InitStructure; //配置NVIC中断,分别优先级
	NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
	NVIC_Init(&NVIC_InitStructure);

当中断通道产生信号响应时,系统中止目前进行的代码,转移执行官方封装好的中断函数,中断函数示例如下:

void EXTI15_10_IRQHandler()
{
	if (EXTI_GetITStatus(EXTI_Line13)==SET)
	{
		count++;//需要执行的部分
		EXTI_ClearITPendingBit(EXTI_Line13);//清除中断标志位,否则程序会不断申请中断
	}
}

利用OLED屏和外部中断我们可以实现对外界的信号做出响应并将操作展现在屏幕上,若干传感器的信号可以及时地不占用cpu地被接受和响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值