IC解密新唐M452LG6AE单片机实现电机控制
IC解密单片机源程序如下:
- #include <stdio.h>
- #include <string.h>
- #include "M451Series.h"
- #include "core_cm4.h"
- #define PLL_CLOCK 72000000
- #define LED_delay 10000000/*绿灯闪亮时间间隔*/
- volatile uint8_t up_flag = 0;
- volatile uint8_t down_flag = 0;
- volatile uint8_t middle_flag = 0;
- volatile uint8_t sensor_flag = 0;
- volatile uint32_t IntStatus = 0;
- volatile uint8_t stop_flag = 2;
- void Delay(uint32_t delayCnt)
- {
- uint32_t i = 0;
- for(i = 0;i<delayCnt;i++);
- }
- void BEEP_ON(void)
- {
- PD7 = 1;
- }
- void BEEP_OFF(void)
- {
- PD7 = 0;
- }
- void BEEP_Onetime(void)
- {
- BEEP_ON();
- Delay(10000000);
- BEEP_OFF();
- }
- //舱门往上顶到上复位
- void Gate_foreword(void)
- {
- while(1)
- {
- while(stop_flag == 1);
- if(PD3 == 0)//顶到上复位开关
- {
- up_flag = 1;
- PE0 = 0;//绿灯亮
- PF2 = 1;//蓝灯灭
- Delay(50000000);
- PE0 = 1;//绿灯灭
- break;
- }
- PA1 = 0;//设置DIR,舱门往上跑
- PA0 = 1;
- Delay(10000);
- PA0 = 0;
- Delay(10000);
- }
- }
- void Gate_backward(void)
- {
- GPIO_CLR_INT_FLAG(PB, BIT1|BIT2|BIT3|BIT4);//清除下中断标志
- NVIC_EnableIRQ(GPB_IRQn);//一进入下落我就使能中断传感器
- while(1)//开始下落
- {
- while(stop_flag == 1);
- //如果此时有一个传感器为低,就说明它被挡住了,那我就停止先不下落
- //只要有一个传感器为0,就是说有东西遮住,就死在这里
- while(!((PB1==1)&&(PB2==1)&&(PB3==1)&&(PB4==1)))
- {
- PE0 = 0;//绿灯亮
- }
- PE0 = 1;//绿灯灭
- if(PD2 == 0)//中复位开关
- {
- middle_flag = 1;
- Gate_foreword();//往上跑到顶部并延时
- }
- if(PC3 == 0)//下复位开关
- {
- down_flag = 1;
- PE0 = 0;//绿灯亮
- PF2 = 1;//蓝灯灭
- Delay(50000000);
- PE0 = 1;//绿灯灭
- break;
- }
- PA1 = 1;//设置DIR,舱门往下跑
- PA0 = 1;
- Delay(10000);
- PA0 = 0;
- Delay(10000);
- }
- }

芯片解密