资源描述:
《电动车霍尔转把检测程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、电动车霍尔转把检测程序//转把电压控制,IO端口电压最大是5V,STM是8位AD采样最大可达2的8次等于255//根据5V对应于255相应算出//4.1V对应于210;//1.5V对应于77;//0.9V对应于46;//0.2V对应于11;#include#includetypedefunsignedintWORD;unsignedcharTime_1ms=0;//1msunsignedcharTime_10ms=0;//10msunsignedcharTime_50ms=0;//
2、50msunsignedintTime_500ms2=0;//500msunsignedcharTime_500ms=0;//500msunsignedcharwaitingwork_flag=0;//等待工作标志unsignedcharalarm_flag=0;//报警标志unsignedcharstate=0;//工作状态标志unsignedintstate_400ms=0;//400msunsignedinthanderbarAD=0;//转把采样数据unsignedcharkey=0;//按键unsignedchark
3、ey_count=0;//按下次数unsignedcharflag=0;//转把插入标志,等待转把转动voidInit_CLK(void);//初始化函数voidInit_isr_t1(void);//定时器初始化函数voidInit_isr_t0(void);//定时器初始化函数voidisr_t1(void);voidInit_ADC(void);//adc初始化函数voidwaitingwork(void);voidhanderbar_rotate(void);//转把转动函数voidad_sample(void);//
4、ad采样函数//voidInit_Time1_PWM(void);//pwm初始化函数voiddelay_1ms(inta);//1ms延时函数voidDelay(WORDn);voidInit_PWM0(void);voidInit_PWM0(void)//PWM0初始化函数{CCON=0;CMOD=0x04;//T0溢出做为PWM时钟CL=0x00;CH=0x00;CCAP0L=0xBA;CCAP0H=0xBA;CCAPM0=0x42;//CR=1;到报警时去起动P3^5口PWM0输出}voidInit_CLK(void)
5、//端口及AUXR初始化函数{//000:fCPU=fMASTER//CLK_CKDIVR&=~0x10;//io口初始化AUXR=0x80;//定时器0-1T,定时器2-12TP1M1=0x03;//0b00000011;//P1^0为开漏,P1^1为准双向,其余为推挽输出;PC_DDR=0x00;//PC端口输入P1M0=0xFD;//0b11111101;0XFDP1ASF=0x01;//P1口为模拟功能//P1端口置初值P1=0x03;//0b00000011;//P1^0为AD,P1^1为按键,P1^2为红灯,P1^
6、3为第二绿灯,P1^4为第1绿灯,P1^5为接通三极管,p1^6为报警;PC_DDR
7、=0b11111111;//PD端口3,4,5,6位为输入,PD其他端口为输出//PD_DDR
8、=0b10000111;P3M1=0x7F;P3M0=0x80;P3=0x00;//PC_CR1=0XFF;//推挽输出//PD_CR1=0b10010111;//3,5,6位悬浮输入,4为上拉输入//端口清零//PCODR_ODR4=0;//红灯//PCODR_ODR5=0;//第二绿灯//PCODR_ODR6=0;//第一绿灯}//5201=1
9、3.25MHz,8MHz,定时1ms;voidInit_isr_t1(void)//定时器1初始化函数{Time_1ms=0;TR1=0;TMOD=0X10;TH1=0XFB;TL1=0XB1;EA=1;ET1=1;TR1=1;//起动定时器}//TIM4_CR1=0x00;//TIM4_IER=0x01;//UpdateInterruptenabled//TIM4_EGR=0x00;//TIM4_PSCR=6;//64分频//TIM4_ARR=125;//TIM4_ARR=250;//TIM4_CR1
10、=0X01;//cen
11、=1;打开定时器voidInit_isr_t0(void)//定时器0初始化函数做为PWM0的时钟{TR0=0;TMOD=0x02
12、0x10;TH0=0xCB;//TH0=0xFB;TH0=0xCB;//TH0=0xFB;//TR0=1;}voidInit_ADC(void)