最近,心态不佳,没什么心思搞这个。。因为,大四一开始都在找工作。。而目前签的这家在省外,去做电梯电气(感觉有很大的行业局限性,将来想往其他方面电力电器开关行业转不知道容不容易)。不知道当时怎么就签了。。以为来保底的,结果才发现没有必要签所谓的保底,后面有些单位也挺不错的。。现在又因为待遇跟留在省内一样,心里有点郁闷,还不如当时不签。。现在想毁约,可是又没有看到更合适的。。哎,大学四年,其实学得挺杂的,又没有什么很强烈的爱好,感觉做什么都可以,就不太想跑那么远了。。现在的心情好矛盾啊。。求指点迷津啊。
这篇笔记是参考论坛上各位高手的一些程序,稍微理解了中断的使用,感觉还真的把cortex m0当作单片机来用了(说实话,我都不知道单片机自己算不算是入门了,感觉程序写起来也不是很利索)。。
下面是程序,KEY1跟KE2都用中断功能。一个中断调用流水灯,一个驱动蜂鸣器。。
#include<stdio.h>
#include"NUC1xx.h"
#include"DrvGPIO.h"
#include"DrvSYS.h"
void Delay_ms(uint32_t x) //延时
{
uint32_t i,j;
for(i=800;i>0;i--)
for(j=x;j>0;j--);
}
void Init(void) //初始化
{
Delay_ms(1000); //等待时钟就绪
DrvGPIO_EnableInt( E_GPB, 14, E_IO_FALLING, E_MODE_EDGE); //设置端口GPB14为外部中断模式
DrvGPIO_EnableDebounce(E_GPB, 14);
DrvGPIO_InitFunction( E_FUNC_EXTINT0); //指定外部中断0引脚功能
DrvGPIO_EnableInt( E_GPB, 15, E_IO_FALLING, E_MODE_EDGE); //设置端口GPB14为外部中断模式
DrvGPIO_EnableDebounce(E_GPB, 15);
DrvGPIO_InitFunction( E_FUNC_EXTINT0); //指定外部中断0引脚功能
DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT); //GPB10为输出模式
DrvGPIO_ClrBit(E_GPB, 10); //关闭蜂鸣器
}
void EINT0Callbck( void )
{
DrvGPIO_SetBit( E_GPB, 10); // 蜂鸣器响
}
void EINT1Callbck( void )
{
do{
DrvGPIO_ClrBit(E_GPA,2);
Delay_ms(1000);
DrvGPIO_SetBit(E_GPA,2);
Delay_ms(1000);
DrvGPIO_ClrBit(E_GPA,3);
Delay_ms(1000);
DrvGPIO_SetBit(E_GPA,3);
Delay_ms(1000);
DrvGPIO_ClrBit(E_GPA,4);
Delay_ms(1000);
DrvGPIO_SetBit(E_GPA,4);
Delay_ms(1000);
DrvGPIO_ClrBit(E_GPA,5);
Delay_ms(1000);
DrvGPIO_SetBit(E_GPA,5);
Delay_ms(1000);
while(1) ;
}
}
main(void)
{
UNLOCKREG(x); //芯片注册解锁
SYSCLK->PWRCON.XTL12M_EN =1; //设定12M外部晶振
LOCKREG(x); //芯片上锁
Init();
DrvGPIO_EnableEINT0( E_IO_FALLING, E_MODE_EDGE, EINT0Callbck);
DrvGPIO_EnableEINT1( E_IO_FALLING,
E_MODE_EDGE, EINT1Callbck);
while(1)
{
if(DrvGPIO_GetBit( E_GPB, 14) == 0)
{
EINT0Callbck();
}
if(DrvGPIO_GetBit( E_GPB, 15) == 0)
{
EINT1Callbck();
}
}
} |