OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4433|回复: 5

这个程序用c语言怎么改写

[复制链接]

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
发表于 2013-11-11 10:26:35 | 显示全部楼层 |阅读模式

#include "exti.h"
#include "control.h"
//#include "key.h"
#include "delay.h"
#include "usart.h"
////////////////////////////////////////////////////////////////////////////////// 
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//Mini STM32开发板
//外部中断 驱动代码     
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2010/12/01 
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 正点原子 2009-2019
//All rights reserved  
//////////////////////////////////////////////////////////////////////////////////   
/*===============================================================================
  全局变量
================================================================================*/
u8 ControlFlag =0;      //开关控制标志
u8 Reset1Flag = 0;       //复位开关K1标志
u8 Reset2Flag = 0;      //复位开关K2标志
u8 ServerFlag = 0;      //服务器+5V标志
u8 SwitchFlagLong = 0;      //机器总开关长按 
u8 SwitchFlagShort = 0;     //机器总开关短按

//外部中断1服务程序   总开关
void EXTI1_IRQHandler(void)

  u8 i;
 delay_ms(30);//消抖
 if(KEY1 == 1)
 {
#ifdef _DEVICEFLAG_ 
  
 for(i=0;i<2;i++)
 {
  delay_ms(1000);
 }
 if(KEY1 == 0)  //按键2
 {
  ControlFlag = 2;
 }
 else if(KEY1 == 1)
 {
  ControlFlag = 1;
 }  
#else
 if(KEY1 == 1)
 {
  ControlFlag = 1;
 }
#endif
}
 EXTI->R=1<<1;  //清除LINE1上的中断标志位 
}
//外部中断2服务程序  复位开关2
void EXTI2_IRQHandler(void)
{ u8 i;
 delay_ms(30);
 if(KEY2 == 1)
 {
 for(i=0;i<2;i++)
 {
  delay_ms(1000);
 }
 if(KEY2 == 0)
 {
  ControlFlag = 6;
 }
 else if (KEY2 == 1)
 {
  ControlFlag = 5; 
 }
 }
 EXTI->R=1<<2;  //清除LINE2上的中断标志位
}
//外部中断3服务程序 复位开关1
void EXTI3_IRQHandler(void)
{ u8 i;
 delay_ms(30);
 if(KEY3 == 1)
 {
 for(i=0;i<2;i++)
 {
  delay_ms(1000);
 }
 if(KEY3 == 0)
 {
  ControlFlag = 4;
 }
 else if(KEY3 == 1)
 {
  ControlFlag = 3;
 }
 }
 EXTI->R=1<<3;  //清除LINE3上的中断标志位
}

//外部中断初始化程序
//初始化PA0,PA1,PA2,PA3为中断输入.
void EXTIX_Init(void)
{
 RCC->APB2ENR|=1<<2;     //使能PORTA时钟
// JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD  

 GPIOA->CRL&=0XFFFF0000;//PA0,PA1,PA2,PA3设置成输入  
 GPIOA->CRL|=0X00008888;  
// GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入  
// GPIOA->CRH|=0X80800000;       
// GPIOA->ODR|=1<<13;    //PA13上拉,PA0默认下拉
// GPIOA->ODR|=1<<15;    //PA15上拉

// Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
 Ex_NVIC_Config(GPIO_A,1,RTIR); //上升沿触发
 Ex_NVIC_Config(GPIO_A,2,RTIR); //上升沿触发
 Ex_NVIC_Config(GPIO_A,3,RTIR); //上升沿触发
 MY_NVIC_Init(2,1,EXTI1_IRQChannel,2);    //抢占2,子优先级2,组2
 MY_NVIC_Init(2,2,EXTI2_IRQChannel,2);  //抢占2,子优先级2,组2
 MY_NVIC_Init(2,2,EXTI3_IRQChannel,2);  //抢占2,子优先级2,组2
// MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2   
}

芯片为at89c51

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2013-11-11 11:06:34 | 显示全部楼层
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-11-11 11:19:39 | 显示全部楼层
这个不是C语言的 吗?
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-11 11:25:21 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
这不是c语言啊,这是用msp430芯片编的程序
回复 支持 反对

使用道具 举报

18

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-11-5
在线时间
0 小时
 楼主| 发表于 2013-11-11 11:25:56 | 显示全部楼层
回复【2楼】as564335sa:
---------------------------------
就是要用这三个中断,不知用c语言该怎么改写
回复 支持 反对

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2013-11-11 12:27:00 | 显示全部楼层
LZ回去好好看看书吧...这个不是那么好改的...相当于重写一遍....

51的配置比这个简单多了,不过没那么多外部中断....

用“msp430编的程序”就不懂了...= =、
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表