📄 k60-keil
字号:
#include "MK60N512MD100.h"
#include "delay.h"
#include "serial.h"
#include "pwm.h"
#include "pit.h"
#include "function.h"
#include "define.h"
#include "wdog.h"
#include "adc.h"
unsigned char SendByte=0;
unsigned char LineCount;//列计数值
unsigned char RowCount; //行计数值
unsigned char LineCount1;//列计数值
unsigned char RowCount1; //行计数值
unsigned char ImageFlag=0;
int16_t SteerCounter=0;
uint16_t MotorSpeed=0;
uint8_t SerialBuf[24]={0};
uint8_t SerialAdd=0;
uint8_t SerialFlag=0;
unsigned char SendStartLineFlag=0;
unsigned char SendADFlag=0;
// 图像原始数据
unsigned char ImageData[RowMax][ColumnMax]; //图像数据数组
unsigned char ThresholdData[RowMax][ColumnMax]; //二值化数据数组
int ThresholdValue=0; //二值化阈值
int main (void)
{
__disable_irq();
SystemCoreClockUpdate(); /* Get Core Clock
Frequency */
//IO口初始化
GPIO_Init();//PB0-PB7为OV7620数据口 PB8为行中断口 PA11为场中断口,若摄像头为5V输出,每个口都要串联200欧姆限流电阻
//串口初始化
Serial_Init (UART3,90000000,115200);//波特率115200 //串口PC16 PC17
UART3->C2|=UART_C2_RIE_MASK; //使能接收中断
NVIC_EnableIRQ(UART3_RX_TX_IRQn);//打开串口中断
Ser_PutChar(UART3,0x01); //串口验证看门口
//电机PWM初始化
FTM0_Init(); //10K频率 PC1正转,PC2反转
FTM1_Init();//舵机初始化50Hz ,PA12
Counter_Init(); //PA10口,编码器计数器初始化,定时器0中断10ms读取 编码器脉冲值MotorSpeed
//打开场中断
NVIC_EnableIRQ(PORTA_IRQn);
NVIC_DisableIRQ(PORTB_IRQn);
NVIC_SetPriority(PORTA_IRQn,1);
NVIC_SetPriority(PORTB_IRQn,2);
NVIC_SetPriority(PIT0_IRQn,3);
//电机控制定时器
NVIC_EnableIRQ(PIT0_IRQn);//开启定时器
PIT_Init(PIT0_IRQn,450000);//定时器0时间
// PIT_Init(PIT1_IRQn,450000);//定时器1时间
// ADC_Init(ADC1,8); //AD初始化8位精度
SteerUpdatePWM(0,DirectMiddle);//
while(1)
{
/*图像大小为70*51
RowMax 51 //图像行数
ColumnMax 70 //图像列数*/
NVIC_DisableIRQ(PIT0_IRQn);//关闭定时器
Ser_PutChar(UART3,0x01);
Ser_PutImageString(UART3,(int8_t *)&ImageData[0][0],RowMax*ColumnMax);
Ser_PutChar(UART3,0x01);
Delay_MS(1);
} // end while(1)
}
void PIT0_IRQHandler(void)
{
if((PIT->CHANNEL[0].TFLG&PIT_TFLG_TIF_MASK)!=0)
{
PIT->CHANNEL[0].TFLG |= PIT_TFLG_TIF_MASK ;// Clear Timer Interrupt Flag
MotorSpeed=FTM2->CNT; //读取速度
FTM2->CNT=0; //计数值清零
}
}
void PIT1_IRQHandler(void)
{
if((PIT->CHANNEL[1].TFLG&PIT_TFLG_TIF_MASK)!=0)
{
PIT->CHANNEL[1].TFLG |= PIT_TFLG_TIF_MASK ;// Clear Timer Interrupt Flag
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -