Exemplo n.º 1
0
int main(void)
{
	  //使用USB 必须CoreClock = 96M
    uint8_t usb_hid_send_buf[8] ={0,0,0,0,0,0};
    uint8_t usb_hid_rec_buf[8];
    uint8_t usb_hid_rec_cnt = 0; //接收帧计数
    SystemClockSetup(ClockSource_EX50M,CoreClock_96M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
	  KBI_Init(KBI_PinLookup_CHK60EVB, kNumOfKEY);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	     
	  UART_printf("Waitting for USB connect ...\r\n");
    USB_Init(); //初始化USB设备 
    USB_WaitDeviceEnumed(); //等待USB枚举成功
	  UART_printf("USB connected!\r\n");
	
    while(1) 
    {
			  KBI_Scan();
        usb_hid_send_buf[0] = KBI_GetKeyValue(kKEY1);
        usb_hid_send_buf[1] = KBI_GetKeyValue(kKEY2);	
        USB_HID_SendData(usb_hid_send_buf,8);  //发送数据
        if(USB_HID_RecData(usb_hid_rec_buf) != 0)  //接收到了数据
        {
            LED_Ctrl(kLED1, (usb_hid_rec_buf[0]&0x01)>>0);
            LED_Ctrl(kLED2, (usb_hid_rec_buf[0]&0x02)>>1);		
            usb_hid_rec_cnt++;
					  UART_printf("USB HID Data Received\r\n");
        }
        HID_Proc(); //执行HID进程
			  DelayMs(KBI_SCAN_PERIOD_IN_US/1000); //延时
    }
Exemplo n.º 2
0
int main(void)
{
	  //使用USB 必须CoreClock = 96M
    uint8_t FnKey = 0;
    uint8_t Keybuf[6] = {0,0,0,0,0,0};
    SystemClockSetup(ClockSource_EX50M,CoreClock_96M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
	  KBI_Init(KBI_PinLookup_CHK60EVB, kNumOfKEY);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	     
	  UART_printf("Waitting for USB connect ...\r\n");
    USB_Init(); //初始化USB设备 
    USB_WaitDeviceEnumed(); //等待USB枚举成功
	  UART_printf("USB connected!\r\n");
	
    while(1) 
    {
			  KBI_Scan();
			  if(KBI_GetKeyState(kKEY1) == kKBI_SINGLE)
				{
            Keybuf[0] = 4;  //A 的USBHIDKeyCode
				    USB_HID_SetKeyBoard(FnKey,Keybuf);
				}
			  if(KBI_GetKeyState(kKEY2) == kKBI_SINGLE)
				{
            Keybuf[0] = 5;  //A 的USBHIDKeyCode
				    USB_HID_SetKeyBoard(FnKey,Keybuf);
				}
        HID_Proc(); //执行HID进程
			  DelayMs(KBI_SCAN_PERIOD_IN_US/1000); //延时
    }
}
Exemplo n.º 3
0
int main(void)
{
  //Clock Setup Internal Clock , CoreClock = 24M
	SystemClockSetup(ClockSource_IRC,CoreClock_24M);
	//DelayInit
	DelayInit();
	//LED Init
	LED_Init();
	
  //Init a debug UART prot
//	UART_DebugPortInit(UART1_RX_PC03_TX_PC04,115200);
	UART_DebugPortInit(UART0_RX_PB16_TX_PB17,115200);
	DisplayCPUInfo();



	
	GPIO_Test();
	MAG3110_Test();
	
	AT24Cxx_Test();
	SPIFLASH_Test();
	ADC_Test();
       WDOG_Init();
	while(1);

}
Exemplo n.º 4
0
int main(void)
{
    //初始化系统时钟 使用外部50M晶振 PLL倍频到100M
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    //初始化GUI
    GUI_Init(&CHGUI_InitStruct1);
    //设置背景色为黑色
    GUI_SetBkColor(BLACK);
    //普通字符显示模式
    GUI_SetTextMode(GUI_TEXTMODE_NORMAL);
    //设置前景色为红色
    GUI_SetColor(LGRAY);
    //将当前字体设置为CourierNew
    GUI_SetFontFormName("FONT_CourierNew");
    //打印字符
    GUI_printf("HelloWorld\r\n");
    //打印CHGUI版本号
    GUI_printf("CHGUI_Version:%0.2f\r\n", (float)(GUI_VERSION/100));
    //打印LCDID
    GUI_printf("ID:%X\r\n", GUI_GetDeivceID());
    while(1)
    {

    }
}
Exemplo n.º 5
0
int main(void)
{
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    GUI_Init(&CHGUI_InitStruct1);
    GUI_SetFontFormName("FONT_CourierNew");
    while(1) 
    {
        GUI_GotoXY(0, 0);
        GUI_TOUCH_GetState(&State);
        //打印物理AD坐标
        GUI_printf("Phy:X:%04d Y:%04d\r\n", GUI_TOUCH_GetxPhys(), GUI_TOUCH_GetyPhys());
        //打印逻辑AD坐标
        GUI_printf("Log:X:%04d Y:%04d\r\n", State.x, State.y);	
        GUI_printf("State:%01d\r\n", State.Pressed);
        //LCD 画笔跟踪
        GUI_DrawPoint(State.x, State.y);			
        DelayMs(10);
        //GUI 触摸屏处理函数 每10MS调用一次
        GUI_TOUCH_Exec();
    }
}
Exemplo n.º 6
0
int main(void)
{
    uint32_t LPTM_Value = 0;
    LPTM_InitTypeDef LPTM_InitStruct1;
    FTM_InitTypeDef FTM_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	  //在PC3上产生 1KHz 占空比50%的 方波
    FTM_InitStruct1.Frequency = 1000;
    FTM_InitStruct1.FTMxMAP = FTM0_CH3_PC4;
    FTM_InitStruct1.FTM_Mode = FTM_Mode_EdgeAligned;
    FTM_InitStruct1.InitalDuty = 5000;
    FTM_Init(&FTM_InitStruct1);
    //开启PTC5上的脉冲计数引脚
    LPTM_InitStruct1.LPTMxMap = LPTM_CH2_PC5;
    LPTM_InitStruct1.LPTM_InitCompareValue = 200;          //在脉冲计数模式下无意义
    LPTM_InitStruct1.LPTM_Mode = LPTM_Mode_PC_FALLING;     //下降沿触发计数
    LPTM_Init(&LPTM_InitStruct1);
    while(1) 
    {
        //读取脉冲技术值
        LPTM_Value = LPTM_GetTimerCounterValue(LPTMR0);
        //清空技术值
        LPTM_ResetTimeCounter(LPTMR0);
        UART_printf("LPTMR:%dHz\r\n", LPTM_Value);
        DelayMs(1000);
    }
}
Exemplo n.º 7
0
int main(void)
{
    uint8_t i;
    uint32_t cnt = 0;
    CAN_InitTypeDef CAN_InitStruct1;
    //使用CAN时 CoreClock 必须是96M
    SystemClockSetup(ClockSource_EX50M,CoreClock_96M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    //配置CAN初始化信息
    CAN_InitStruct1.CANxMap = CAN1_TX_PE24_RX_PE25;      //PE24 PE25引脚
    CAN_InitStruct1.CAN_BaudRateSelect = CAN_SPEED_125K; //125K 波特率
    CAN_InitStruct1.FilterEnable = ENABLE;              //不使用过滤ID功能
    CAN_Init(&CAN_InitStruct1);
	  
    //配置接收信息
    CAN_RxMsg1.MBIndex = CAN_MB1;                  //接收邮箱使用CAN_MB1
    CAN_RxMsg1.DLC = 8;                            //最多接收8个字节 一帧
    CAN_RxMsg1.Id = 7;                             //接收ID
    CAN_EnableReceiveMB(CAN1, &CAN_RxMsg1);        //使能接收邮箱
    //配置发送数据
    CAN_TxMsg1.Id = 10;                          //发送ID 10
    CAN_TxMsg1.DLC = 8;                          //每帧8字节
    CAN_TxMsg1.IDE = CAN_IDE_Standard;           //标准数据帧
    CAN_TxMsg1.RTR = CAN_RTR_Data;               //数据帧
    CAN_TxMsg1.MBIndex = CAN_MB2;                //使用邮箱0
		
    //写入测试数据  
    memcpy(CAN_TxMsg1.Data, "12345678", CAN_TxMsg1.DLC);
    while(1) 
    { 
        if (CAN_Receive(CAN1, &CAN_RxMsg1) == TRUE)
        {
					  //如果接收成功 打印接收数据
            UART_printf("ID:0x%x\r\n",CAN_RxMsg1.Id);
            UART_printf("Data: ");
            for(i = 0; i < CAN_RxMsg1.DLC; i++)
            {
                UART_printf("0x%x ", CAN_RxMsg1.Data[i]);
            }
            UART_printf("\r\n");
        }
        cnt++; 
        //发送
        if(cnt == 1000000)
        {
            CAN_Transmit(CAN1, &CAN_TxMsg1);
            cnt = 0;
        }				
    }
}
Exemplo n.º 8
0
int main(void)
{
    uint32_t counter;
    NRF2401_InitTypeDef NRF2401_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHKATOM, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    //配置2401引脚
    NRF2401_InitStruct1.CE_GPIO_Instance  = PTA_BASE;    //CE
    NRF2401_InitStruct1.CE_GPIO_Pin       = GPIO_Pin_13;
    NRF2401_InitStruct1.CS_GPIO_Instance  = PTA_BASE;    //CS
    NRF2401_InitStruct1.CS_GPIO_Pin       = GPIO_Pin_14;
    NRF2401_InitStruct1.IRQ_GPIO_Instance = PTA_BASE;    //IRQ
    NRF2401_InitStruct1.IRQ_GPIO_Pin      = GPIO_Pin_12;
    NRF2401_InitStruct1.DATA_SPI_CSMap = SPI0_PCS0_PA14; //SPI
    NRF2401_InitStruct1.DATA_SPI_DataMap = SPI0_SCK_PA15_SOUT_PA16_SIN_PA17;
    NRF2401_Init(&NRF2401_InitStruct1);
    if(NRF24L01_Check() != NRF_OK)
    {
        UART_printf("NRF2401 init failed\r\n");
        return 1;
    }
		
    //先设置为接收模式
    NRF2401_SetRXMode(); 
    while(1)
    {
        if(counter > 20000)
        {
            NRF2401_SetTXMode(); //设置为发送模式
            if(NRF2401_SendData("NRF2401 Test CHK60EVB!") == TX_OK)
            {
                UART_printf("Send Succ.\r\n");
            }
            else
            {
                UART_printf("Send Failed\r\n");
            }
            NRF2401_SetRXMode(); //设置为接收模式
            counter = 0;
        }
        counter++;
        if(NRF2401_RecData(NRF2401RXBuffer) == NRF_OK) //接收到了数据
        {
            UART_printf("DataRec:%s\r\n",NRF2401RXBuffer); //打印数据
        }
    }
}
Exemplo n.º 9
0
int main(void)
{
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHKATOM, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	  uCOS_SysTickInit();
    OSInit();  //OS初始化
OSTaskCreate(AppStartTask,(void *)0,
							&APP_START_STK[TASK_STK_SIZE-1],
							APP_START_TASK_PRIO); //建立LED1任务
	OSStart(); //控制权交给操作系统
	//程序永远不会运行到这
}
Exemplo n.º 10
0
int main(void)
{
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	  //初始化SPIFlash
    SPI_FLASH_Init();
	  UART_printf("SPI Flash Size:%dKB\r\n", SPI_FLASH_GetCapacity()/1024);
    //测试SPIFLASH
	  SPIFLASH_Test();
    while(1) 
    {		
    }
}
Exemplo n.º 11
0
int main(void)
{
    SD_InitTypeDef SD_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	  UART_printf("Please Insert Card\r\n");
    SD_InitStruct1.SD_BaudRate = 2000000;
    //等待SD卡初始化成功
    while(SD_Init(&SD_InitStruct1) != ESDHC_OK);
    UART_printf("SD Size:%dMB\r\n", SD_InitStruct1.SD_Size);
    while(1)
    {
		
    }
}
Exemplo n.º 12
0
int main(void)
{
    uint32_t ADC_Value = 0;
    ADC_InitTypeDef ADC_InitStruct1;
    //初始化系统时钟 使用外部50M晶振 PLL倍频到100M
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHKATOM, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
    //初始化ADC
    ADC_InitStruct1.ADCxMap = ADC0_SE13_PB3;              //PC0 引脚作为ADC0 14通道
    ADC_InitStruct1.ADC_Precision = ADC_PRECISION_10BIT;  //10位精度
    ADC_InitStruct1.ADC_TriggerSelect = ADC_TRIGGER_SW;   //软件触发(A 通道可使用软/硬件触发 B 通道只能使用硬件触发)
    ADC_Init(&ADC_InitStruct1);
    while(1) 
    {
        ADC_Value = ADC_GetConversionValue(ADC0_SE13_PB3); //获得AD转换值
        UART_printf("ADC0_SE13_PB3:%d\r\n",ADC_Value);
        DelayMs(300);
    }
}
Exemplo n.º 13
0
int main(void)
{
    uint32_t ADC_Value = 0;
    ADC_InitTypeDef ADC_InitStruct1;
    //初始化系统时钟 使用外部50M晶振 PLL倍频到100M
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    //初始化ADC
    ADC_InitStruct1.ADCxMap = ADC0_SE20_DM1;              //DM1 引脚作为ADC0 20通道(SE单端模式)
    ADC_InitStruct1.ADC_Precision = ADC_PRECISION_10BIT;  //10位精度
    ADC_InitStruct1.ADC_TriggerSelect = ADC_TRIGGER_SW;   //软件触发(A 通道可使用软/硬件触发 B 通道只能使用硬件触发)
    ADC_InitStruct1.ADC_ClkDiv = ADC_CLKDIV_1;            //ADC转换时钟为总线时钟/8 时钟越慢转换速度越慢 精度越高
    ADC_Init(&ADC_InitStruct1);
    while(1)
    {
        ADC_Value = ADC_GetConversionValue(ADC0_SE20_DM1); //获得AD转换值
        UART_printf("ADC0_SE20_DM1:%d\r\n",ADC_Value);
        DelayMs(300);
    }
}
Exemplo n.º 14
0
void BSP_Configuration (void)
{
	GetCPUInfo ();	
	BSP_PowerInit ();
	BSP_PowerDown ();
	BSP_PowerUp ();	
	_BSP_NvicInit ();	
	UART_Configuration ();
	DisplayCPUInfo ();	
	/* SSD1906驱动初始化 使其初始化为RGB模式 */
	ILI_Configuration ();
	LIG_Configuration ();
	SSD1906_Configurationg ();
	STK_Configuration ();
	/* 继电器配置成断开连接 */
	RL_Configuration ();
	if(UM_GET_SYSTEMPARA&PARA_BEEP_MASK){
		API_GUI_OpenSpeak ();
		speak_jif = jiffies+30;
	}
	/* AD7687初始化配置 SPI模式,SCK与WV_Configuration共用,FTM初始化,采用中断方式采集 */
	AD7687_Configuration ();
	/* 波形发生器初始化配置,配置ML2035和AD5453,采用模拟SPI,在使用时,将SCK初始化为IO模式,在恢复SPI */
	WV_Configuration ();
	/* ADG409模拟开关芯片配置,通道一 */
	ADG_Configuration ();
	/* RTC初始化 */
	RTC_Init ();
	/* BAT电量初始化 */
	BSP_BatterCheckInit ();
	RF_Init ();
	//SN74121_Init ();
	//STK_Configuration ();
	STK_delay10ms(50);
	GUI_Get_Keymsg ();
	WDOG_Init (60000);
}
Exemplo n.º 15
0
int main(void)
{
    DMA_InitTypeDef DMA_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHKATOM, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
    //开启UART 发送中断/DMA功能
    UART_ITConfig(UART4,UART_IT_TDRE,ENABLE);
    //使能UART4 TX DMA发送
    UART_DMACmd(UART4,UART_DMAReq_Tx,ENABLE);
    DMA_InitStruct1.Channelx = DMA_CH0;                         //使用DMA0通道  (0-15)
    DMA_InitStruct1.DMAAutoClose = ENABLE;                      //传输完毕后自动关闭
    DMA_InitStruct1.EnableState = ENABLE;                       //初始化后立即开始传输
    DMA_InitStruct1.MinorLoopLength = sizeof(UARTSendBuffer);   //传输次数
    DMA_InitStruct1.PeripheralDMAReq  = UART4_TRAN_DMAREQ;      //UART 传输完成触发
    DMA_InitStruct1.TransferBytes = 1;                          //每次传输一个字节
    //配置目的地址传输参数
    DMA_InitStruct1.DestBaseAddr = (uint32_t)&(UART4->D);       //指向目的地址
    DMA_InitStruct1.DestDataSize = DMA_DST_8BIT;                //数组为1Byte
    DMA_InitStruct1.DestMajorInc = 0;                           //执行一次大循环后 地址不增加
    DMA_InitStruct1.DestMinorInc = 0;                           //每次传输完地址不增加
 
    //配置源地址传输参数
    DMA_InitStruct1.SourceBaseAddr = (uint32_t)UARTSendBuffer;
    DMA_InitStruct1.SourceDataSize = DMA_SRC_8BIT;
    DMA_InitStruct1.SourceMajorInc = 0;
    DMA_InitStruct1.SourceMinorInc = 1;                         //每次传输1个字节后地址自动加1 将后面的数据继续发送
    DMA_Init(&DMA_InitStruct1);
    //等待传输完成
    while(DMA_IsComplete(DMA_CH0) == FALSE);
    while(1)
    {
		
    }
}
Exemplo n.º 16
0
Arquivo: main.c Projeto: oldjohnh/car
int main(void)
{
	unsigned char i;          
	unsigned char Send_Count; 
	uint32_t DMA_Value0 = 0;
	uint32_t DMA_Value1 = 0;
	PIT_InitTypeDef PIT_InitStruct1;
	GPIO_InitTypeDef GPIO_InitStruct1;
	FTM_InitTypeDef FTM_InitStruct1;
	DMACNT_InitTypeDef DMACNT_InitStruct1;
	SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
	UART_DebugPortInit(UART0_RX_PA14_TX_PA15,115200);
	DisplayCPUInfo();
	DelayInit();
	OLED_Init();
	DMACNT_InitStruct1.DMACNT_Mode = DMACNT_MODE_FALLING;  //ÉÏÉýÑؼÆÊý
	DMACNT_InitStruct1.DMA_Chl = DMA_CH0;                 //ʹÓÃͨµÀ 0
	DMACNT_InitStruct1.GPIOx = PTC;                       //PTC5
	DMACNT_InitStruct1.GPIO_Pin = GPIO_Pin_5; 
	DMACNT_Init(&DMACNT_InitStruct1);

	GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStruct1.GPIO_InitState = Bit_RESET;
	GPIO_InitStruct1.GPIO_IRQMode = GPIO_IT_DISABLE;
	GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_OPP;
	GPIO_InitStruct1.GPIOx = PTB;
	GPIO_Init(&GPIO_InitStruct1);
	
	GPIO_InitStruct1.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStruct1.GPIO_InitState = Bit_SET;
	GPIO_InitStruct1.GPIOx = PTB;
	GPIO_Init(&GPIO_InitStruct1);
	
	PIT_InitStruct1.PITx=PIT2;
	PIT_InitStruct1.PIT_Interval=100;
	PIT_Init(&PIT_InitStruct1);
	NVIC_EnableIRQ(PIT2_IRQn);
	PIT_ITConfig(PIT2,PIT_IT_TIF,ENABLE);
	
	PIT_InitStruct1.PITx=PIT0;
	PIT_InitStruct1.PIT_Interval=20000;
	PIT_Init(&PIT_InitStruct1);
	PIT_ITConfig(PIT0,PIT_IT_TIF,ENABLE);
	NVIC_EnableIRQ(PIT0_IRQn);
	FTM_InitStruct1.Frequency = 800;
	FTM_InitStruct1.FTM_Mode = FTM_Mode_EdgeAligned;
//	FTM_InitStruct1.InitalDuty = 10000;
	FTM_InitStruct1.FTMxMAP = FTM0_CH0_PC1;
	FTM_Init(&FTM_InitStruct1);
	UART_printf("DMACNT_CH0_Value:%d \n",*Pid_Out);


	while(1)
	{
//		if(key_detect1()){
//			Pid_Set += 500;
//		}
//		if(key_detect3()){
//			Pid_Set -= 500;
//		}
		GPIO_ResetBits(PTB,GPIO_Pin_0);
		PidError[2] = Pid_Set - *Pid_Out;
		PidOut =  Kp * (PidError[2] - PidError[1]);
		PidOut += Ki *  PidError[2] * Td;
		PidOut += Kd * (PidError[2] - 2 * PidError[1] + PidError[0]) / Td;
		PidError[0] = PidError[1];
		PidError[1] = PidError[2];
		PID_FinalOut =PidOut*2;
		
		
//		
//		if(key_detect5()){
//			Kd+=0.2;OLED_Clear();
//		}
//		else if(key_detect6()){
//			Kd-=0.2;OLED_Clear();
//		}
//		
//		OLED_Write_String(2,0,"Kp");
//		OLED_Write_String(2,2,"Ki");
//		OLED_Write_String(2,4,"Kd");
//		OLED_Write_Num3(6,0,Kp*10);
//		OLED_Write_Num3(6,2,Ki*10);
//		OLED_Write_Num3(6,4,Kd*10);
//		OLED_Write_Num4(9,6,*Pid_Out-1000);
//		
		
		if(PID_FinalOut>10000) PID_FinalOut=10000;
		else if(PID_FinalOut<0) PID_FinalOut=0;
		
		FTM_PWM_ChangeDuty(FTM0_CH0_PC1,PID_FinalOut);
		
	}
}
Exemplo n.º 17
0
int main(void)
{
    float cnt = 0;
    uint32_t i;
    uint8_t res;
    SD_InitTypeDef SD_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHKATOM, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    UART_printf("Please Insert Card\r\n");
    SD_InitStruct1.SD_BaudRate = 2000000;
    //等待SD卡初始化成功
    while(SD_Init(&SD_InitStruct1) != ESDHC_OK);
    //初始化FAT32
    znFAT_Device_Init(); //设备初始化
    znFAT_Select_Device(0,&initArgSD); //选择SD卡设备
    res = znFAT_Init();
    if(res == ERR_SUCC)
    {
        UART_printf("Suc. to init FS\r\n");
        UART_printf("BPB_Sector_No:%d\r\n",initArgSD.BPB_Sector_No);
        UART_printf("Total_SizeKB:%d\r\n",initArgSD.Total_SizeKB);
        UART_printf("BytesPerSector:%d\r\n",initArgSD.BytesPerSector);
        UART_printf("FATsectors:%d\r\n",initArgSD.FATsectors);
        UART_printf("SectorsPerClust:%d\r\n",initArgSD.SectorsPerClust);
        UART_printf("FirstFATSector:%d\r\n",initArgSD.FirstFATSector);
        UART_printf("FirstDirSector:%d\r\n",initArgSD.FirstDirSector);
        UART_printf("FSsec:%d\r\n",initArgSD.FSINFO_Sec);
        UART_printf("Next_Free_Cluster:%d\r\n",initArgSD.Next_Free_Cluster);
        UART_printf("FreenCluster:%d\r\n",initArgSD.Free_nCluster);
    }
    else
    {
        UART_printf("FAT32 Init failed CODE:%d",res);
        while(1);
    }
    res = znFAT_Delete_File("/RECORD/record.csv");
    if(res != ERR_SUCC)
    {
        UART_printf("File delate failed!, CODE:%d\r\n",res);
    }
    else
    {
        UART_printf("/RECORD/record.csv deleted succ.\r\n");
    }
    UART_printf("Creating Dir...");
    res = znFAT_Create_Dir("/RECORD/",&dtInfo1); //创建目录
    if((res != ERR_SUCC) && (res != ERR_DIR_ALREADY_EXISTING))
    {
        UART_printf("Fail CODE:%d\r\n",res);
        while(1);
    }
    UART_printf("Creating Files...");
    res = znFAT_Create_File(&fileInfo1,"/RECORD/record.csv",&dtInfo1); //创建文件 文件名尽量使用8.3短文件名
    if(res != ERR_SUCC)
    {
        UART_printf("Failed CODE:%d\r\n",res);
        while(1);
    }
    UART_printf("Writing data...\r\n");
    znFAT_WriteData(&fileInfo1,sizeof(TextTitle),(unsigned char *)TextTitle); //打印表头

    //写入数据
    for(cnt=0; cnt<(2*PI); cnt+=0.05)
    {
        i++;
        sprintf((char *)recordBuffer,"%d,%1.3f,%1.3f\r\n",i,sin(cnt),cos(cnt)); //写入sin cos
        UART_printf((char *)recordBuffer);
        znFAT_WriteData(&fileInfo1,strlen((char *)recordBuffer),(unsigned char *)recordBuffer);
    }
    UART_printf("Writing Completed please see CSV file on PC!\r\n");
    znFAT_Close_File(&fileInfo1); //打开一个文件后,必须关闭
    znFAT_Flush_FS();  //必须刷新系统使文件生效
    while(1)
    {

    }
}