diff options
Diffstat (limited to 'S100App/Src')
-rw-r--r-- | S100App/Src/2FAT12.c | 237 | ||||
-rw-r--r-- | S100App/Src/Bios.c | 381 | ||||
-rw-r--r-- | S100App/Src/CTRL.c | 425 | ||||
-rw-r--r-- | S100App/Src/Disk.c | 801 | ||||
-rw-r--r-- | S100App/Src/Ext_Flash.c | 198 | ||||
-rw-r--r-- | S100App/Src/Flash.c | 32 | ||||
-rw-r--r-- | S100App/Src/HARDWARE.c | 383 | ||||
-rw-r--r-- | S100App/Src/I2C.c | 229 | ||||
-rw-r--r-- | S100App/Src/Interrupt.c | 79 | ||||
-rw-r--r-- | S100App/Src/MMA8652FC.c | 268 | ||||
-rw-r--r-- | S100App/Src/Main.c | 69 | ||||
-rw-r--r-- | S100App/Src/Oled.c | 319 | ||||
-rw-r--r-- | S100App/Src/STM32F103_Startup.s | 641 | ||||
-rw-r--r-- | S100App/Src/STM32F103_System.c | 157 | ||||
-rw-r--r-- | S100App/Src/UI.c | 1110 | ||||
-rw-r--r-- | S100App/Src/USB_bot.c | 269 | ||||
-rw-r--r-- | S100App/Src/USB_desc.c | 109 | ||||
-rw-r--r-- | S100App/Src/USB_istr.c | 138 | ||||
-rw-r--r-- | S100App/Src/USB_prop.c | 262 | ||||
-rw-r--r-- | S100App/Src/USB_pwr.c | 152 | ||||
-rw-r--r-- | S100App/Src/USB_scsi.c | 230 | ||||
-rw-r--r-- | S100App/Src/_APP_Startup.s | 152 |
22 files changed, 0 insertions, 6641 deletions
diff --git a/S100App/Src/2FAT12.c b/S100App/Src/2FAT12.c deleted file mode 100644 index f511afa7..00000000 --- a/S100App/Src/2FAT12.c +++ /dev/null @@ -1,237 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. ********************
-File Name : 2FAT12.c
-Version : S100 APP Ver 2.11
-Description:
-Author : bure & Celery
-Data: 2015/08/03
-History:
-2015/08/03 ͳһ������
-*******************************************************************************/
-#include <string.h>
-#include "FAT12.h"
-#include "BIOS.h"
-
-
-#define FAT_LEN 0x1800
-#define FAT1_BASE 0x00001000 // FAT1����ʼ��ַ
-#define FAT2_BASE 0x00002800 // FAT2����ʼ��ַ
-#define ROOT_BASE 0x00004000 // ��Ŀ¼��ʼ��ַ
-#define FILE_BASE 0x00008000 // �ļ�����ʼ��ַ
-#define SEC_LEN 0x200 // ��������
-#define FAT1_SEC 0x0C // FAT1������
-#define FAT2_SEC 0x0C // FAT2������
-
-#define OK 0 // �������
-#define SEC_ERR 1 // ���������
-#define FAT_ERR 2 // FAT�������
-#define OVER 3 // �������
-#define NEW 4 // ��Ŀ¼��
-#define END 0xFFF // ���ӽ���
-
-#define OW 0 // ��д(���ݴ�0��1��д)
-#define RW 1 // ��д
-
-
-/*******************************************************************************
- ������һ�����Ӵغź�
-*******************************************************************************/
-u8 NextCluster(u16* pCluster)
-{
- u16 FatNum;
- u32 Addr = FAT1_BASE +(*pCluster + *pCluster/2);
-
- *(pCluster+1)= *pCluster; // ����ǰһ���غ�
-// *(pCluster+1)= 0;
- if((*pCluster >= END)||(*pCluster < 2)) return OK;
- if(ReadDiskData((u8*)&FatNum, Addr, 2)!= OK) return SEC_ERR;
- *pCluster = (*pCluster & 1)?(FatNum >>4):(FatNum & 0x0FFF); // ָ����һ���غ�
- return OK;
-}
-/*******************************************************************************
- ���ļ�����(512 Bytes), ������һ���غ�
-*******************************************************************************/
-u8 ReadFileSec(u8* pBuffer, u16* pCluster)
-{
- u32 ReadAddr = FILE_BASE + SEC_LEN*(*pCluster-2);
-
- if(ReadDiskData(pBuffer, ReadAddr, 256)!=OK) return SEC_ERR; // ��ǰ������
- pBuffer += 256;
- ReadAddr += 256;
- if(ReadDiskData(pBuffer, ReadAddr, 256)!=OK) return SEC_ERR; // ���������
- if(NextCluster(pCluster)!=0) return FAT_ERR; // ȡ��һ���غ�
- return OK;
-}
-/*******************************************************************************
- д�ļ�����(512 Bytes)����д��ǰFAT�������ز��ҵ�����һ���غ�
-*******************************************************************************/
-u8 ProgFileSec(u8* pBuffer, u16* pCluster)
-{
- u16 Tmp;
- u32 ProgAddr = FILE_BASE + SEC_LEN*(*pCluster-2);
-
- if(ProgDiskPage(pBuffer, ProgAddr)!= OK) return SEC_ERR; // дǰ������
- pBuffer += 256;
- ProgAddr += 256;
- if(ProgDiskPage(pBuffer, ProgAddr)!= OK) return SEC_ERR; // ������
- Tmp = *pCluster;
- switch(Tmp) {
- case 0: // ���дغ�
- case 1: // ���дغ�
- if(SeekBlank (pBuffer, pCluster )!= OK) return OVER;
- if(SetCluster(pBuffer, pCluster )!= OK) return SEC_ERR;
- *(pCluster+1) = Tmp;
- return OK;
- case END: // ���ӽ���
- default :
- if(NextCluster(pCluster)!= OK) return FAT_ERR; // ȡ��һ���غ�
- return OK;
- }
-}
-/*******************************************************************************
- ���ҿ��дغţ���������У�Լ�����������ֵ������ǰ���дغż���һ�����дغ�
-*******************************************************************************/
-u8 SeekBlank(u8* pBuffer, u16* pCluster)
-{
- u16 Offset, Tmp, i, n = 0;
- u32 SecAddr;
-
- for(i=0; i<4096; i++) {
- Offset = i + i/2;
- if((Offset%256)== 0) {
- SecAddr = FAT1_BASE +(Offset &(~0xFF));
- if(ReadDiskData(pBuffer, SecAddr, 258)!= 0) return SEC_ERR;
- }
- Offset %= 256;
- Tmp = pBuffer[Offset] + pBuffer[Offset+1] <<8;
- Tmp = (i & 1)?(Tmp >>4):(Tmp & 0xFFF);
- if(Tmp == 0) {
- *pCluster++ = i;
- n++;
- if(n > 1) return OK;
- }
- }
- *(pCluster+1)= 0xFFF;
- return OK;
-}
-/*******************************************************************************
- ����һ���غ�д��FAT����ǰ�غ�����λ�ã�����ʱ��ǰ�غ�Ϊԭ��һ���غ�
-*******************************************************************************/
-u8 SetCluster(u8* pBuffer, u16* pCluster)
-{
- u16 Offset, Tmp, i, k;
- u32 SecAddr;
-
- i = *pCluster; // ��ȡԭ��ǰ�غ�
- k = *(pCluster+1); // ��ȡ��һ�غ�
- *pCluster = k;
- Offset = i + i/2;
- SecAddr = FAT1_BASE +(Offset &(~0xFF));
- Tmp = Offset & 0xFF;
- if(ReadDiskData(pBuffer, SecAddr, 256)!= 0) return SEC_ERR;
- if(i & 1) pBuffer[Tmp]=((k<<4)& 0xF0)+(pBuffer[Tmp]& 0x0F);
- else pBuffer[Tmp]= k;
- if(Tmp++ < 256) {
- if(i & 1) pBuffer[Tmp]= k>>4;
- else pBuffer[Tmp]=((k>>8)& 0x0F)+(pBuffer[Tmp]& 0xF0);
- if(ProgDiskPage(pBuffer, SecAddr)!= 0) return SEC_ERR;
- } else {
- if(ProgDiskPage(pBuffer, SecAddr)!= 0) return SEC_ERR;
- SecAddr += 256;
- if(ReadDiskData(pBuffer, SecAddr, 256)!= 0) return SEC_ERR;
- if(i & 1) pBuffer[0]= k>>4;
- else pBuffer[0]=((k>>8)& 0x0F)+(pBuffer[0]& 0xF0);
- if(ProgDiskPage(pBuffer, SecAddr)!= 0) return SEC_ERR;
- }
- return OK;
-}
-/*******************************************************************************
-
-*******************************************************************************/
-u8 SearchFile(u8* pBuffer, u8* pFileName, u16* pCluster, u32* pDirAddr,u32* flag)
-{
- u16 i, n;
-
- *pCluster = 0;
- for(*pDirAddr=ROOT_BASE; *pDirAddr<FILE_BASE; ) {
- if(ReadDiskData(pBuffer, *pDirAddr, 256)!= OK) return SEC_ERR;
- for(n=0; n<256; n+=32) {
- for(i=0; i<4; i++) {
- if(pBuffer[n + i]!= 0) {
- if(pBuffer[n + i]!= pFileName[i]) break;
- if(i == 3) { // �ҵ��ļ���
- *pCluster = *(u16*)(pBuffer + n + 0x1A); // �ļ���һ���غ�
- return OK;
- }
- } else return NEW; // ������һ���հ�Ŀ¼���
- }
- *pDirAddr += 32;
- }
- }
- return OVER;
-}
-
-/*******************************************************************************
- ��ģʽ���ļ��������ļ���һ���غż�Ŀ¼���ַ�� 0�غż���һ���հ�Ŀ¼���ַ
-*******************************************************************************/
-u8 OpenFileRd(u8* pBuffer, u8* pFileName, u16* pCluster, u32* pDirAddr)
-{
- u16 i, n;
-
- *pCluster = 0;
- for(*pDirAddr=ROOT_BASE; *pDirAddr<FILE_BASE; ) {
- if(ReadDiskData(pBuffer, *pDirAddr, 256)!= OK) return SEC_ERR;
- for(n=0; n<256; n+=32) {
- for(i=0; i<11; i++) {
- if(pBuffer[n + i]!= 0) {
- if(pBuffer[n + i]!= pFileName[i]) break;
- if(i == 10) { // �ҵ��ļ���
- *pCluster = *(u16*)(pBuffer + n + 0x1A); // �ļ���һ���غ�
- return OK;
- }
- } else return NEW; // ������һ���հ�Ŀ¼���
- }
- *pDirAddr += 32;
- }
- }
- return OVER;
-}
-/*******************************************************************************
- дģʽ���ļ��������ļ���һ���غż�Ŀ¼���ַ
-*******************************************************************************/
-u8 OpenFileWr(u8* pBuffer, u8* pFileName, u16* pCluster, u32* pDirAddr)
-{
- u16 i, n;
-
- i = OpenFileRd(pBuffer, pFileName, pCluster, pDirAddr);
- if(i != NEW) return i;
- else { // ��ǰ��Ϊ�հ�Ŀ¼��
- if(SeekBlank(pBuffer, pCluster)!= OK) return OVER; // ��FAT��������
- n =*pDirAddr & 0xFF; // nΪ��ǰҳĿ¼��
- if(ReadDiskData(pBuffer,(*pDirAddr)-n, 256)!= OK) return SEC_ERR;
- for(i=0; i<11; i++) pBuffer[n + i]= pFileName[i]; // ������Ŀ¼��
- *(u16*)(pBuffer + n + 0x1A)= *pCluster;
- if(ProgDiskPage(pBuffer,(*pDirAddr)-n)!= OK) return SEC_ERR;
- return OK;
- }
-}
-/*******************************************************************************
- �ر��ļ�����������д��FAT�������ļ�����д��Ŀ¼�����FAT1��FAT2
-*******************************************************************************/
-u8 CloseFile(u8* pBuffer, u32 Lenght, u16* pCluster, u32* pDirAddr)
-{
- u16 n;
-
-// *pCluster = *(pCluster+1); // ��ȡǰһ���غ�
- *(pCluster+1) = 0xFFF;
- SetCluster(pBuffer, pCluster);
- if(ReadDiskData(pBuffer, (*pDirAddr &(~0xFF)), 256)!= OK) return SEC_ERR;
- *(u8* )(pBuffer +(*pDirAddr & 0xFF)+ 0x0B)= 0x20;
- *(u32*)(pBuffer +(*pDirAddr & 0xFF)+ 0x1C)= Lenght;
- if(ProgDiskPage(pBuffer, (*pDirAddr &(~0xFF)))!= OK) return SEC_ERR;
- for(n=0; n<FAT1_SEC; n++) {
- if(ReadDiskData(pBuffer, FAT1_BASE+n*256, 256)!= OK) return SEC_ERR;
- if(ProgDiskPage(pBuffer, FAT2_BASE+n*256 )!= OK) return SEC_ERR;
- }
- return OK;
-}
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/Bios.c b/S100App/Src/Bios.c deleted file mode 100644 index 99a41d73..00000000 --- a/S100App/Src/Bios.c +++ /dev/null @@ -1,381 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : Bios.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/07
-History:
-2015/07/07 ͳһ������
-*******************************************************************************/
-
-#include "APP_Version.h"
-#include "usb_lib.h"
-#include "Bios.h"
-#include "HARDWARE.h"
-#include "I2C.h"
-#include "CTRL.h"
-
-/******************************************************************************/
-#define ADC1_DR_Address ((u32)0x4001244C)
-
-vu8 gSk = 0;//
-vu32 gTimeOut,gMs_timeout;
-volatile u32 gTime[8];
-vu16 ADC1ConvertedValue[2];
-vu32 gHeat_cnt=0;
-
-
-/*******************************************************************************
-������: Get_AdcValue
-��������:��ȡADC ת����Ķ���
-�������:ת�����AD
-���ز���:NULL
-*******************************************************************************/
-u16 Get_AdcValue(u8 i)
-{
- return ADC1ConvertedValue[i];
-}
-/*******************************************************************************
-������: Set_HeatingTime
-��������:���ü���ʱ��
-�������:heating_time ����ʱ��
-���ز���:NULL
-*******************************************************************************/
-void Set_HeatingTime(u32 heating_time)
-{
- gHeat_cnt = heating_time;
-}
-/*******************************************************************************
-������: Get_HeatingTime
-��������:��ȡ����ʱ��
-�������:NULL
-���ز���:����ʱ��
-*******************************************************************************/
-u32 Get_HeatingTime(void)
-{
- return gHeat_cnt;
-}
-/*******************************************************************************
-������: Init_GTIME
-��������:��ʼ����ʱ��
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Init_Gtime(void)
-{
- u8 i;
-
- for(i = 0; i < 8; i++) gTime[i] = 0;
-}
-
-/*******************************************************************************
-������: Delay_Ms
-��������:��ʱ����
-�������:��ʱ�ȴ��ĺ�����ֵ
-���ز���:NULL
-*******************************************************************************/
-void Delay_Ms(u32 ms)
-{
- gMs_timeout = ms*20;
- while(gMs_timeout); // {if(Scan_key()!=0)break;}
-}
-/*******************************************************************************
-������: Delay_HalfMs
-��������:ÿ��λΪ0.5�������ʱ����
-�������:��ʱ�ȴ���0.5������
-���ز���:NULL
-*******************************************************************************/
-void Delay_HalfMs(u32 ms)
-{
- gMs_timeout = ms*10;
- while(gMs_timeout); // {if(Scan_key()!=0)break;}
-}
-
-/*******************************************************************************
-������: USB_Port
-��������:���� USB �豸 IO �˿�
-�������:State = ENABLE / DISABLE
-���ز���:NULL
-*******************************************************************************/
-void USB_Port(u8 state)
-{
- USB_DN_LOW();
- USB_DP_LOW();
- if(state == DISABLE) {
- USB_DN_OUT();
- USB_DP_OUT();
- } else {
- USB_DN_EN();
- USB_DP_EN();
- }
-}
-/*******************************************************************************
-������: RCC_Config
-��������:ʱ�ӳ�ʼ��
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void RCC_Config(void)
-{
- RCC_DeInit();
- FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
- FLASH_SetLatency(FLASH_Latency_1); // Flash 1 wait state for 48MHz
- RCC_CFGR_CFG();
- RCC_PLL_EN();
- RCC_HSICmd(ENABLE);
- RCC_PLLCmd(ENABLE);
- while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
- while(RCC_GetSYSCLKSource() != 0x08) {}
-
- RCC_AHBPeriphClockCmd (RCC_AHBPeriph_SRAM | RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2 |
- RCC_AHBPeriph_FLITF, // Enable DMA1 clock ???
- ENABLE);
- RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
- RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 ,//| RCC_APB2Periph_ADC3, //RCC_APB2Periph_TIM1,
- ENABLE );
- RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3,
- ENABLE);
-
- RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div1); // USBCLK = 48MHz
-}
-/*******************************************************************************
-������: NVIC_Config
-��������:�жϳ�ʼ��
-�������:tab_offset
-���ز���:NULL
-*******************************************************************************/
-void NVIC_Config(u16 tab_offset)
-{
- NVIC_InitTypeDef NVIC_InitStructure;
-
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, tab_offset);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-}
-/*******************************************************************************
-������: GPIO_Config
-��������:����GPIO
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void GPIO_Config(void)
-{
- GPIO_InitTypeDef GPIO_InitStructure;
-
- GPIOA_OUTPUT();
- GPIOA_L_DEF();
- GPIOA_H_DEF();
-
- GPIOB_OUTPUT();
- GPIOB_L_DEF();
- GPIOB_H_DEF();
-
-//------ PA7��Ϊģ��ͨ��Ai7�������� ----------------------------------------//
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
-//------ OLED_RST_PIN(PB9) ------------------------------------------------------------//
- GPIO_InitStructure.GPIO_Pin = OLED_RST_PIN;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-//------- ���ȿ���λ PB4--------------------------------------------------------//
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST,ENABLE); // PB4=JNTRST
-
- GPIO_InitStructure.GPIO_Pin = HEAT_PIN;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-//------ PB0��Ϊģ��ͨ��Ai8�������� ---------------------------------------//
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-//---------- INPUT Voltage Detection Pin VB PB1(Ai9) ---------------------------------------//
- GPIO_InitStructure.GPIO_Pin = VB_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
-//-------- K1 = PA8, K2 = PA6 ----------------------------------------------------------//
- GPIO_InitStructure.GPIO_Pin = KEY1_PIN | KEY2_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-}
-/*******************************************************************************
-������: Ad_Init
-��������: ��ʼ�� AD
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Ad_Init(void)
-{
- u32 timeout = 10*0x1000;
- ADC_InitTypeDef ADC_InitStructure;
- DMA_InitTypeDef DMA_InitStructure;
-
- /* DMA1 channel1 configuration ---------------------------------------------*/
- DMA_DeInit(DMA1_Channel1);
- DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
- DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC1ConvertedValue;
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
- DMA_InitStructure.DMA_BufferSize = 2;
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
- DMA_InitStructure.DMA_Priority = DMA_Priority_High;
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
- DMA_Init(DMA1_Channel1, &DMA_InitStructure);
-
- /* Enable DMA1 channel1 */
- DMA_Cmd(DMA1_Channel1, ENABLE);
- // ADC1 configuration ------------------------------------------------------//
- ADC_DeInit(ADC1);
- ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
- ADC_InitStructure.ADC_ScanConvMode = ENABLE;
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
- ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStructure.ADC_NbrOfChannel = 2;
- ADC_Init(ADC1, &ADC_InitStructure);
-
- // ADC2 configuration ------------------------------------------------------//
- ADC_DeInit(ADC2);
- ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
- ADC_InitStructure.ADC_ScanConvMode = ENABLE;
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
- ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
- ADC_InitStructure.ADC_NbrOfChannel = 1;
- ADC_Init(ADC2, &ADC_InitStructure);
-
- // ADC1,2 regular channel7 channel9 and channel8 configuration ----------//
- ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 2, ADC_SampleTime_239Cycles5); //28 or 55
- ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_239Cycles5); //28 or 55
- ADC_RegularChannelConfig(ADC2, ADC_Channel_9, 1, ADC_SampleTime_55Cycles5); //28 or 55
-
- /* Enable ADC1 DMA */
- ADC_DMACmd(ADC1, ENABLE);
-
- ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 */
- ADC_Cmd(ADC2, ENABLE); /* Enable ADC2 */
-
- ADC_ResetCalibration(ADC1); /* Enable ADC1 reset calibaration register */
- while(ADC_GetResetCalibrationStatus(ADC1)) if(!timeout--) return ; /* Check the end of ADC1 reset calibration register */
-
- ADC_ResetCalibration(ADC2); /* Enable ADC2 reset calibaration register */
- timeout = 10*0x1000;
- while(ADC_GetResetCalibrationStatus(ADC2)) if(!timeout--) return ; /* Check the end of ADC2 reset calibration register */
-
- ADC_SoftwareStartConvCmd(ADC1, ENABLE);
- ADC_SoftwareStartConvCmd(ADC2, ENABLE);
-}
-
-/*******************************************************************************
-������: Init_Timer2
-��������: ��ʼ�� ��ʱ��2
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Init_Timer2(void)
-{
- NVIC_InitTypeDef NVIC_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
-
- TIM_TimeBaseStructure.TIM_Prescaler = 48-1; // (48MHz)/48 = 1MHz
- TIM_TimeBaseStructure.TIM_Period = 10000-1; // Interrupt per 10mS
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit (TIM2, &TIM_TimeBaseStructure);
- TIM_ARRPreloadConfig(TIM2, ENABLE);
- TIM_ITConfig (TIM2, TIM_IT_Update, ENABLE);
- TIM_Cmd (TIM2, ENABLE);
-
- NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-}
-/*******************************************************************************
-������: Init_Timer3
-��������: ��ʼ�� ��ʱ��3
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Init_Timer3(void)
-{
- NVIC_InitTypeDef NVIC_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
-
- TIM_TimeBaseStructure.TIM_Prescaler = 48-1; //(48MHz)/48 = 1MHz
- TIM_TimeBaseStructure.TIM_Period = 50-1; // Interrupt per 50us
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV2;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit (TIM3, &TIM_TimeBaseStructure);
- TIM_ARRPreloadConfig(TIM3, ENABLE);
- TIM_ITConfig (TIM3, TIM_IT_Update, ENABLE);
- TIM_Cmd (TIM3, ENABLE);
-
- NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-}
-/*******************************************************************************
-������: TIM2_ISR
-��������: ��ʱ��2�жϺ���
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void TIM2_ISR(void)
-{
- u8 i;
-
- TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // Clear interrupt flag
- for(i=0; i<8; i++) if(gTime[i] > 0) gTime[i]--;
-
- if(++gSk%4==0) Scan_Key();
-}
-/*******************************************************************************
-������: TIM3_ISR
-��������: ��ʱ��3�жϺ���
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void TIM3_ISR(void)
-{
- static u8 heat_flag = 0;
-
- TIM_ClearITPendingBit(TIM3, TIM_IT_Update); // Clear interrupt flag
-
- if(gTimeOut > 0) gTimeOut--;
- if(gMs_timeout > 0) gMs_timeout--;
-
- if(gHeat_cnt > 0) {
- gHeat_cnt--;
- if(heat_flag) HEAT_OFF();
- else HEAT_ON();
-
- heat_flag = ~heat_flag;
- }
- if(gHeat_cnt == 0) {
- HEAT_OFF();
- heat_flag = 0;
- }
-}
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/CTRL.c b/S100App/Src/CTRL.c deleted file mode 100644 index b1a1d00e..00000000 --- a/S100App/Src/CTRL.c +++ /dev/null @@ -1,425 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : CTRL.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/08/03
-History:
-2015/07/07 ͳһ������
-2015/08/03 �Ż��ƶ��ж�
-*******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include "CTRL.h"
-#include "Bios.h"
-#include "UI.h"
-#include "HARDWARE.h"
-#include "S100V0_1.h"
-#include "Disk.h"
-#include "MMA8652FC.h"
-
-#define HEATINGCYCLE 30
-/******************************************************************************/
-DEVICE_INFO_SYS device_info;
-/******************************************************************************/
-
-u8 gCtrl_status = 1;
-u16 gHt_flag = 0;
-vs16 gTemp_data = 250;//25��
-s16 gPrev_temp = 250; // ǰһ���¶�ֵ
-u8 gIs_restartkey = 0;/*��������־*/
-u8 gPre_status = 1;
-
-const DEVICE_INFO_SYS info_def = {
- "2.11", //Ver
- 2000, //T_Standby; // 200��C=1800 2520,�����¶�
- 3000, // T_Work; // 350��C=3362, �����¶�
- 100, //T_Step;
- 3*60*100, //Wait_Time; //3*60*100 3 mintute
- 6*60*100 // Idle_Time; //6*60*100 6 minute
-};
-struct _pid {
- s16 settemp; //�����趨�¶�
- s16 actualtemp; //����ʵ���¶�
- s16 err; //�����¶Ȳ�ֵ
- s16 err_last; //������һ���¶Ȳ�ֵ
- s32 ht_time; //�������ʱ��
- u16 kp,ki,kd; //������������֡���ϵ��
- s32 integral; //�������ֵ
-} pid;
-
-/*******************************************************************************
-������: Get_Ctrl_Status
-��������:��ȡ��ǰ״̬
-�������:��
-���ز���:��ǰ״̬
-*******************************************************************************/
-u8 Get_CtrlStatus(void)
-{
- return gCtrl_status;
-}
-/*******************************************************************************
-������: Set_CtrlStatus
-��������:���õ�ǰ״̬
-�������:status ���õ�״̬
-���ز���:��
-*******************************************************************************/
-void Set_CtrlStatus(u8 status)
-{
- gCtrl_status = status;
-}
-/*******************************************************************************
-������: Set_PrevTemp
-��������:����ǰһ�¶�
-�������:temp ǰһ�¶�ֵ
-���ز���:��
-*******************************************************************************/
-void Set_PrevTemp(s16 temp)
-{
- gPrev_temp = temp;
-}
-
-/*******************************************************************************
-������: Get_HtFlag
-��������:��ȡ��ǰ���ȱ�־,���ȱ�־�ɼ���ʱ�����
-�������:NULL
-���ز���:��ǰ���ȱ�־
-*******************************************************************************/
-u16 Get_HtFlag(void)
-{
- return gHt_flag;
-}
-/*******************************************************************************
-������: Get_TempVal
-��������: ��ȡ��ǰ�¶ȵ�ֵ
-�������:NULL
-���ز���:��ǰ�¶�
-*******************************************************************************/
-s16 Get_TempVal(void)
-{
- return gTemp_data;
-}
-
-/*******************************************************************************
-������: System_Init
-��������: ϵͳ��ʼ��
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void System_Init(void)
-{
- memcpy((void*)&device_info,(void*)&info_def,sizeof(device_info));
-}
-/*******************************************************************************
-������: PID_init
-��������: PID���ݳ�ʼ��
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Pid_Init(void)
-{
- pid.settemp = 0;
- pid.actualtemp = 0;
- pid.err = 0;
- pid.err_last = 0;
- pid.integral = 0;
- pid.ht_time = 0;
- pid.kp = 15;
- pid.ki = 2;
- pid.kd = 1;
-}
-
-/*******************************************************************************
-������: Pid_Realize
-��������: PID����������ʱ��
-�������:temp��ǰ�¶�
-���ز���:�������ݵ�λ/50us
-*******************************************************************************/
-u16 Pid_Realize(s16 temp)
-{
- u8 index = 0,index1 = 1;
- s16 d_err = 0;
-
- pid.actualtemp = temp;
- pid.err = pid.settemp - pid.actualtemp; //�²�
-
- if(pid.err >= 500) index = 0;
- else {
- index = 1;
- pid.integral += pid.err;//������
- }
-////////////////////////////////////////////////////////////////////////////////
-//����ȥ����
- if(pid.settemp < pid.actualtemp) {
- d_err = pid.actualtemp - pid.settemp;
- if(d_err > 20){
- pid.integral = 0; //����5��
- index1 = 0;
- index = 0;
- }
- }
-////////////////////////////////////////////////////////////////////////////////
- if(pid.err <= 30) index1 = 0;
- else index1 = 1;
- pid.ht_time = pid.kp * pid.err + pid.ki * index * pid.integral + pid.kd * (pid.err - pid.err_last)*index1;
- pid.err_last = pid.err;
-
- if(pid.ht_time <= 0) pid.ht_time = 0;
- else if(pid.ht_time > 30*200) pid.ht_time = 30*200;
-
- return pid.ht_time;
-
-}
-
-/*******************************************************************************
-������: Heating_Time
-��������: ������ȱ�־�����ؼ���ʱ��
-�������:temp��ǰ�¶ȣ�wk_temp �����¶�
-���ز���:�������ݵ�λ/50us
-*******************************************************************************/
-u32 Heating_Time(s16 temp,s16 wk_temp)
-{
- u32 heat_timecnt;
-
- pid.settemp = wk_temp;
- if(wk_temp > temp) {
- if(wk_temp - temp >= 18)gHt_flag = 0;//����
- else gHt_flag = 2;//����
- } else {
- if(temp - wk_temp <= 18)gHt_flag = 2;//����
- else gHt_flag = 1;//����
- }
-
- heat_timecnt = Pid_Realize(temp);//Sub_data * 1000;
-
- return heat_timecnt;
-}
-/*******************************************************************************
-������: Status_Tran
-��������: ���ݰ������¶��жϵȿ���״̬ת��
-�������: NULL
-���ز���: NULL
-*******************************************************************************/
-void Status_Tran(void)//״̬ת��
-{
- static u16 init_waitingtime = 0;//��ʼ����ʱ���־λ: 0=> δ��ʼ��,1=>�ѳ�ʼ��
- static u8 back_prestatus = 0;
- s16 heat_timecnt = 0,wk_temp;
- u16 mma_active;
-
- switch (Get_CtrlStatus()) {
- case IDLE:
- switch(Get_gKey()) {
- case KEY_V1:
- if(gIs_restartkey != 1) {
- if(Read_Vb(1) < 4) {
- Set_CtrlStatus(TEMP_CTR);
- init_waitingtime = 0;
- TEMPSHOW_TIMER = 0;
- UI_TIMER = 0;
- G6_TIMER = 0;
- }
- }
- break;
- case KEY_V2:
- if(gIs_restartkey != 1) {
- Set_CtrlStatus(THERMOMETER);
- UI_TIMER = 0;
- Set_LongKeyFlag(1);
- }
- break;
- case KEY_CN|KEY_V3:
- break;
- }
- if(gIs_restartkey && (KD_TIMER == 0)) {
- gIs_restartkey = 0;
- Set_gKey(NO_KEY);
- }
- if(Read_Vb(1) == 0){
- if(Get_UpdataFlag() == 1) Set_UpdataFlag(0);
- Set_CtrlStatus(ALARM);
- }
- if(gPre_status != WAIT && gPre_status != IDLE){
- G6_TIMER = device_info.idle_time;
- Set_gKey(NO_KEY);
- gPre_status = IDLE;
- }
- break;
- case TEMP_CTR:
- switch(Get_gKey()) {
- case KEY_CN|KEY_V1:
- case KEY_CN|KEY_V2:
- Set_HeatingTime(0);
- Set_CtrlStatus(TEMP_SET);
- HEATING_TIMER = 0;
- EFFECTIVE_KEY_TIMER = 500;
- break;
- case KEY_CN|KEY_V3:
- Set_HeatingTime(0);
- Set_LongKeyFlag(0);
- Set_CtrlStatus(IDLE);
- gPre_status = TEMP_CTR;
- gIs_restartkey = 1;
- KD_TIMER = 50; //
- break;
- }
-
- if(Read_Vb(1) >= 4) {
- Set_HeatingTime(0);
- Set_LongKeyFlag(0);
- Set_CtrlStatus(IDLE);
- gPre_status = TEMP_CTR;
- gIs_restartkey = 1;
- KD_TIMER = 50; // 2��
- }
-
- wk_temp = device_info.t_work;
- if(HEATING_TIMER == 0) {
- gTemp_data = Get_Temp(wk_temp);
- heat_timecnt = Heating_Time(gTemp_data,wk_temp); //�������ʱ��
- Set_HeatingTime(heat_timecnt);
- HEATING_TIMER = HEATINGCYCLE;
- }
- if(Get_HeatingTime() == 0) {
- HEATING_TIMER = 0;
- }
-
-
- mma_active = Get_MmaShift();
- if(mma_active == 0) { //MMA_active = 0 ==> static ,MMA_active = 1 ==>move
- if(init_waitingtime == 0) {
- init_waitingtime = 1;
- ENTER_WAIT_TIMER = device_info.wait_time;
- }
- if((init_waitingtime != 0) && (ENTER_WAIT_TIMER == 0)) {
- gHt_flag = 0;
- UI_TIMER = 0;
- Set_HeatingTime(0);
- Set_gKey(0);
- G6_TIMER = device_info.idle_time;
- Set_CtrlStatus(WAIT);
- }
- } else {
- init_waitingtime = 0;
- }
- if(Get_AlarmType() > NORMAL_TEMP) { //////////////////����
- if(Get_UpdataFlag() == 1) Set_UpdataFlag(0);
- Set_CtrlStatus(ALARM);
- }
- break;
- case WAIT:
- wk_temp = device_info.t_standby;
- if(device_info.t_standby > device_info.t_work) { //�����¶ȱȹ����¶ȸ�
- wk_temp = device_info.t_work;
- }
- if(HEATING_TIMER == 0) {
- gTemp_data = Get_Temp(wk_temp);
- heat_timecnt = Heating_Time(gTemp_data,wk_temp); //�������ʱ��
- Set_HeatingTime(heat_timecnt);
- HEATING_TIMER = 30;
- }
-
- if(Read_Vb(1) >= 4) {
- Set_HeatingTime(0);
- Set_LongKeyFlag(0);
- Set_CtrlStatus(IDLE);
- G6_TIMER = device_info.idle_time;
- gPre_status = WAIT;
- gIs_restartkey = 1;
- KD_TIMER = 50; // 2��
- }
-
- if(G6_TIMER == 0) { //�������
- Set_HeatingTime(0);
- Set_LongKeyFlag(0);
- gIs_restartkey = 1;
- KD_TIMER = 200; // 2��
- gPre_status = WAIT;
- Set_CtrlStatus(IDLE);
- }
-
- mma_active = Get_MmaShift();
- if(mma_active == 1 || Get_gKey() != 0) {
- UI_TIMER = 0;
- G6_TIMER = 0;
- init_waitingtime = 0;
- Set_CtrlStatus(TEMP_CTR);
- }
-
- if(Get_AlarmType() > NORMAL_TEMP) { //////////////////����
- if(Get_UpdataFlag() == 1) Set_UpdataFlag(0);
- Set_CtrlStatus(ALARM);
- }
- break;
- case TEMP_SET:
- if(EFFECTIVE_KEY_TIMER == 0) {
- Set_CtrlStatus(TEMP_CTR);
- TEMPSHOW_TIMER = 0;
- }
- break;
- case THERMOMETER:
- if(KD_TIMER > 0) {
- Set_gKey(NO_KEY);
- break;
- }
- switch(Get_gKey()) {
- case KEY_CN|KEY_V1:
- case KEY_CN|KEY_V2:
- back_prestatus = 1;
- break;
- case KEY_CN|KEY_V3:
- Zero_Calibration();
- if(Get_CalFlag() == 1) {
- Disk_BuffInit();
- Config_Analysis(); // ��������U��
- }
- KD_TIMER = 200; //20150717 ��
- break;
- default:
- break;
- }
- if(back_prestatus == 1) {
- back_prestatus = 0;
- Set_HeatingTime(0);
- Set_CtrlStatus(IDLE);
- gPre_status = THERMOMETER;
- gIs_restartkey = 1;
- Set_LongKeyFlag(0);
- KD_TIMER = 50; //
- }
- break;
- case ALARM:
- switch(Get_AlarmType()) {
- case HIGH_TEMP:
- case SEN_ERR:
- wk_temp = device_info.t_work;
- gTemp_data = Get_Temp(wk_temp);
- if(Get_AlarmType() == NORMAL_TEMP) {
- Set_CtrlStatus(TEMP_CTR);
- Set_UpdataFlag(0);
- }
- break;
- case HIGH_VOLTAGE:
- case LOW_VOLTAGE:
- if(Read_Vb(1) >= 1 && Read_Vb(1) <= 3) {
- Set_HeatingTime(0);
- Set_LongKeyFlag(0);
- gIs_restartkey = 1;
- UI_TIMER = 2; // 2��
- gPre_status = THERMOMETER;
- Set_CtrlStatus(IDLE);
- }
- break;
- }
-
- if(Get_HeatingTime != 0) {
- Set_HeatingTime(0) ; //����ֹͣ����
- HEAT_OFF();
- }
- break;
- default:
- break;
- }
-}
-
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/Disk.c b/S100App/Src/Disk.c deleted file mode 100644 index 121109a6..00000000 --- a/S100App/Src/Disk.c +++ /dev/null @@ -1,801 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : Disk.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/07
-History:
-2015/07/07 ͳһ������
-*******************************************************************************/
-#include <string.h>
-#include <stdio.h>
-#include "APP_Version.h"
-#include "Disk.h"
-#include "Bios.h"
-#include "Flash.h"
-#include "Oled.h"
-#include "UI.h"
-#include "CTRL.h"
-#include "HARDWARE.h"
-
-#define Delay_mS Delay_Ms
-void Disk_SecWrite(u8* pBuffer, u32 DiskAddr);
-void Disk_SecRead (u8* pBuffer, u32 DiskAddr);
-void Soft_Delay(void);
-
-uc8 BOOT_SEC[512] = {0xEB, 0x3C, 0x90, 0x4D, 0x53, 0x44, 0x4F, 0x53,
- 0x35, 0x2E, 0x30, 0x00, 0x02, 0x01, 0x08, 0x00,
- 0x02, 0x00, 0x02, 0x50, 0x00, 0xF8, 0x0c, 0x00,
- 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xA2,
- 0x98, 0xE4, 0x6C, 0x4E, 0x4F, 0x20, 0x4E, 0x41,
- 0x4D, 0x45, 0x20, 0x20, 0x20, 0x20, 0x46, 0x41,
- 0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x33, 0xC9,
- 0x8E, 0xD1, 0xBC, 0xF0, 0x7B, 0x8E, 0xD9, 0xB8,
- 0x00, 0x20, 0x8E, 0xC0, 0xFC, 0xBD, 0x00, 0x7C,
- 0x38, 0x4E, 0x24, 0x7D, 0x24, 0x8B, 0xC1, 0x99,
- 0xE8, 0x3C, 0x01, 0x72, 0x1C, 0x83, 0xEB, 0x3A,
- 0x66, 0xA1, 0x1C, 0x7C, 0x26, 0x66, 0x3B, 0x07,
- 0x26, 0x8A, 0x57, 0xFC, 0x75, 0x06, 0x80, 0xCA,
- 0x02, 0x88, 0x56, 0x02, 0x80, 0xC3, 0x10, 0x73,
- 0xEB, 0x33, 0xC9, 0x8A, 0x46, 0x10, 0x98, 0xF7,
- 0x66, 0x16, 0x03, 0x46, 0x1C, 0x13, 0x56, 0x1E,
- 0x03, 0x46, 0x0E, 0x13, 0xD1, 0x8B, 0x76, 0x11,
- 0x60, 0x89, 0x46, 0xFC, 0x89, 0x56, 0xFE, 0xB8,
- 0x20, 0x00, 0xF7, 0xE6, 0x8B, 0x5E, 0x0B, 0x03,
- 0xC3, 0x48, 0xF7, 0xF3, 0x01, 0x46, 0xFC, 0x11,
- 0x4E, 0xFE, 0x61, 0xBF, 0x00, 0x00, 0xE8, 0xE6,
- 0x00, 0x72, 0x39, 0x26, 0x38, 0x2D, 0x74, 0x17,
- 0x60, 0xB1, 0x0B, 0xBE, 0xA1, 0x7D, 0xF3, 0xA6,
- 0x61, 0x74, 0x32, 0x4E, 0x74, 0x09, 0x83, 0xC7,
- 0x20, 0x3B, 0xFB, 0x72, 0xE6, 0xEB, 0xDC, 0xA0,
- 0xFB, 0x7D, 0xB4, 0x7D, 0x8B, 0xF0, 0xAC, 0x98,
- 0x40, 0x74, 0x0C, 0x48, 0x74, 0x13, 0xB4, 0x0E,
- 0xBB, 0x07, 0x00, 0xCD, 0x10, 0xEB, 0xEF, 0xA0,
- 0xFD, 0x7D, 0xEB, 0xE6, 0xA0, 0xFC, 0x7D, 0xEB,
- 0xE1, 0xCD, 0x16, 0xCD, 0x19, 0x26, 0x8B, 0x55,
- 0x1A, 0x52, 0xB0, 0x01, 0xBB, 0x00, 0x00, 0xE8,
- 0x3B, 0x00, 0x72, 0xE8, 0x5B, 0x8A, 0x56, 0x24,
- 0xBE, 0x0B, 0x7C, 0x8B, 0xFC, 0xC7, 0x46, 0xF0,
- 0x3D, 0x7D, 0xC7, 0x46, 0xF4, 0x29, 0x7D, 0x8C,
- 0xD9, 0x89, 0x4E, 0xF2, 0x89, 0x4E, 0xF6, 0xC6,
- 0x06, 0x96, 0x7D, 0xCB, 0xEA, 0x03, 0x00, 0x00,
- 0x20, 0x0F, 0xB6, 0xC8, 0x66, 0x8B, 0x46, 0xF8,
- 0x66, 0x03, 0x46, 0x1C, 0x66, 0x8B, 0xD0, 0x66,
- 0xC1, 0xEA, 0x10, 0xEB, 0x5E, 0x0F, 0xB6, 0xC8,
- 0x4A, 0x4A, 0x8A, 0x46, 0x0D, 0x32, 0xE4, 0xF7,
- 0xE2, 0x03, 0x46, 0xFC, 0x13, 0x56, 0xFE, 0xEB,
- 0x4A, 0x52, 0x50, 0x06, 0x53, 0x6A, 0x01, 0x6A,
- 0x10, 0x91, 0x8B, 0x46, 0x18, 0x96, 0x92, 0x33,
- 0xD2, 0xF7, 0xF6, 0x91, 0xF7, 0xF6, 0x42, 0x87,
- 0xCA, 0xF7, 0x76, 0x1A, 0x8A, 0xF2, 0x8A, 0xE8,
- 0xC0, 0xCC, 0x02, 0x0A, 0xCC, 0xB8, 0x01, 0x02,
- 0x80, 0x7E, 0x02, 0x0E, 0x75, 0x04, 0xB4, 0x42,
- 0x8B, 0xF4, 0x8A, 0x56, 0x24, 0xCD, 0x13, 0x61,
- 0x61, 0x72, 0x0B, 0x40, 0x75, 0x01, 0x42, 0x03,
- 0x5E, 0x0B, 0x49, 0x75, 0x06, 0xF8, 0xC3, 0x41,
- 0xBB, 0x00, 0x00, 0x60, 0x66, 0x6A, 0x00, 0xEB,
- 0xB0, 0x4E, 0x54, 0x4C, 0x44, 0x52, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x52, 0x65,
- 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x64, 0x69, 0x73,
- 0x6B, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74,
- 0x68, 0x65, 0x72, 0x20, 0x6D, 0x65, 0x64, 0x69,
- 0x61, 0x2E, 0xFF, 0x0D, 0x0A, 0x44, 0x69, 0x73,
- 0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xFF,
- 0x0D, 0x0A, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20,
- 0x61, 0x6E, 0x79, 0x20, 0x6B, 0x65, 0x79, 0x20,
- 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61,
- 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xAC, 0xCB, 0xD8, 0x55, 0xAA
- };
-
-static u8 gDisk_buff[0x2600];
-static u32 gDisk_var[(512 + 32 + 28)/4]; // ���̹���������
-static u32 *gV32 = (u32*)&gDisk_var[512/4];
-static u8 *gVar = (u8*) &gDisk_var[512/4 + 8];
-
-static u8 *gBuff = (u8*) &gDisk_var[0];
-const u8 gFat_data[]= {0xF8,0xFF,0xFF,0xFF,0xFF,0xFF};//{0xF8,0XFF,0XFF,0xff,0X0f};//
-
-const char *gKey_words[] = {"T_Standby","T_Work","Wait_Time","Idle_Time","T_Step","Turn_Off_v","TempShowFlag","ZeroP_Ad"};
-const char *gDef_set[] = {"T_Standby=200","T_Work=300","Wait_Time=180", "Idle_Time=360","T_Step=10","Turn_Off_v=10",
- "TempShowFlag=0","ZeroP_Ad=239"};
-const char *gSet_range[] = {" #(100~400)\r\n"," #(100~400)\r\n"," #(60~9999)\r\n"," #(300~9999)\r\n",
- " #(5~25)\r\n"," #(9~12)\r\n"," #(0,1)\r\n"," #ReadOnly\r\n"};
-
-static u8 gFile_con[512];
-#define CONFIG_CONT 8
-u8 gRewriteflag[16];
-
-#define ROW_CONT 35
-#define FILE_CONT 254
-/*******************************************************************************
-������: Soft_Delay
-��������:��ʱ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Soft_Delay()
-{
- int i,j;
- for(i = 0 ; i < 1000 ; i++)
- for(j = 0; j < 100; j++);
-}
-/*******************************************************************************
-������: Set_Ver
-��������:���ò���ֵ
-�������:str ������k ����ָʾ
-���ز���:NULL
-*******************************************************************************/
-void Set_Ver(u8 str[],u8 k)
-{
- s16 set_ver;
-
- switch(k) {
- case 0:
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- device_info.t_standby = set_ver * 10;
- break;
- case 1:
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- device_info.t_work = set_ver * 10;
- break;
- case 2:
- if(str[3] <= '9' && str[3] >= '0') { //4�
- set_ver = (str[0] - 48) * 1000 + (str[1] - 48) * 100 + (str[2] - 48) * 10 + (str[3] - 48);
- } else if(str[2] <= '9' && str[2] >= '0') { //3�
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- } else if(str[1] <= '9' && str[1] >= '0') { //2�
- set_ver = (str[0] - 48) * 10 + (str[1] - 48);
- }
- device_info.wait_time = set_ver * 100;
- break;
- case 3:
- if(str[3] <= '9' && str[3] >= '0') { //4�
- set_ver = (str[0] - 48) * 1000 + (str[1] - 48) * 100 + (str[2] - 48) * 10 + (str[3] - 48);
- } else if(str[2] <= '9' && str[2] >= '0') { //3�
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- }
- device_info.idle_time = set_ver * 100;
- break;
- case 4:
- if(str[1] <= '9' && str[1] >= '0') { //2�
- set_ver = (str[0] - 48) * 10 + (str[1] - 48);
- } else {
- set_ver = str[0] - 48;
- }
- device_info.t_step = set_ver * 10;
- break;
- case 5:
- if(str[3] <= '9' && str[3] >= '0') { //4�
- set_ver = (str[0] - 48) * 1000 + (str[1] - 48) * 100 + (str[2] - 48) * 10 + (str[3] - 48);
- } else if(str[2] <= '9' && str[2] >= '0') { //3�
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- } else if(str[1] <= '9' && str[1] >= '0') { //2�
- set_ver = (str[0] - 48) * 10 + (str[1] - 48);
- } else {
- set_ver = str[0] - 48;
- }
- gTurn_offv = set_ver * 10;
- break;
- case 6:
- set_ver = str[0] - 48;
- Set_TemperatureShowFlag(set_ver);
- break;
- case 7:
- if(str[2] <= '9' && str[2] >= '0') { //3�
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- } else if(str[1] <= '9' && str[1] >= '0') { //2�
- set_ver = (str[0] - 48) * 10 + (str[1] - 48);
- } else {
- set_ver = str[0] - 48;
- }
- if(!gCalib_flag) gZerop_ad = set_ver;
-
- break;
- default:
- break;
- }
-}
-/*******************************************************************************
-������: Cal_Val
-��������:��������Ϸ���
-�������:str ������k ����ָʾ flag ���УAD��־
-���ز���:����0�Ƿ��� 1�Ϸ�
-*******************************************************************************/
-u8 Cal_Val(u8 str[],u8 k,u8 flag)
-{
- u16 set_ver;
-
- switch(k) {
- case 0:
- case 1:
- if(str[2] > '9' || str[2] < '0' || //��λû��
- str[1] > '9' || str[1] < '0' || //ʮλû��
- str[0] > '4' || str[0] <= '0' || //��λ����4 С��0
- (str[0] == '4' && (str[1] != '0' || str[2] != '0')))
- return 0;
- break;
- case 2:
- if(str[3] <= '9' && str[3] >= '0') {//4�
- if((str[2] > '9' && str[2] < '0') || (str[1] > '9' && str[1] < '0'))//ʮλ��λΪ��
- return 0;
- } else if(str[2] <= '9' && str[2] >= '0') { //3�
- if(str[1] > '9' && str[1] < '0')//ʮλΪ��
- return 0;
- } else if(str[1] <= '9' && str[1] >= '0'){//���
- if(str[0] >'9' || str[0] < '6')//��λΪ�� С��60
- return 0;
- } else {
- return 0;
- }
- break;
- case 3:
- if(str[3] <= '9' && str[3] >= '0') {//4�
- if((str[2] > '9' && str[2] < '0') || (str[1] > '9' && str[1] < '0'))//ʮλ��λΪ��
- return 0;
- } else if(str[2] <= '9' && str[2] >= '0') { //3�
- if(str[0] >'9' || str[0] < '3')//ʮλΪ�� С��300
- return 0;
- } else {//���
- return 0;
- }
- break;
- case 4://T_Step=10 #(5~25)
- if(str[1] <= '5' && str[1] >= '0'){//���
- if(str[0] >'2' || str[0] < '0')//��λΪ�� С��60
- return 0;
- } else {
- if(str[0] < '5' && (str[0] != '1')){
- return 0;
- }
- }
- break;
- case 5://Turn_Off_v=10 #(9~12)
- if(str[1] <= '2' && str[1] >= '0'){//���
- if(str[0] >'9' || str[0] < '0')//��λΪ�� С��60
- return 0;
- } else {
- if(str[0] < '9'){
- return 0;
- }
- }
- break;
- case 6://TempShowFlag=0 #(0,1)
- if(str[0] != '1' && str[0] != '0')
- return 0;
- break;
- case 7:
- if(str[2] <= '9' && str[2] >= '0') { //3�
- set_ver = (str[0] - 48) * 100 + (str[1] - 48) * 10 + (str[2] - 48);
- }else if(str[1] <= '9' && str[1] >= '0') { //2�
- set_ver = (str[0] - 48) * 10 + (str[1] - 48);
- } else {
- set_ver = str[0] - 48;
- }
- if(flag == 1){
- if(set_ver != gZerop_ad) return 0;
- }
- break;
- default:
- break;
- }
- return 1;
-}
-/*******************************************************************************
-������: Disk_BuffInit
-��������:�������ݳ�ʼ��
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Disk_BuffInit(void)
-{
- memcpy(gDisk_buff, (u8*)APP_BASE,0x2600);
- memset(gRewriteflag,0,16);
-}
-/*******************************************************************************
-������: Upper
-��������:СдתΪ��д
-�������:str��Ҫת�����ַ�����len �ַ�������
-���ز���:NULL
-*******************************************************************************/
-void Upper(u8* str, u16 len)
-{
- u16 i;
- for(i = 0; i < len; i++)
- if(str[i] >= 'a' && str[i] <= 'z')
- str[i] -= 32;
-}
-/*******************************************************************************
-������: SearchFile
-��������:�����ļ�
-�������:pfilename �ļ�����pfilelen�ļ����ȣ�root_addr ���ҿ�ʼ��ַ
-���ز���:�ļ����ڵ�ַ
-*******************************************************************************/
-u8* SearchFile(u8* pfilename, u16* pfilelen,u16* root_addr)
-{
- u16 n,sector;
- u8 str_name[11];
- u8* pdiraddr;
-
- pdiraddr = ROOT_SECTOR;
-
- for(n = 0; n < 16; n++) {
- memcpy(str_name,pdiraddr,11);
- Upper(str_name,11);
- if(memcmp(str_name,pfilename,11) == 0) {
- memcpy((u8*)pfilelen,pdiraddr + 0x1C,2);
- memcpy((u8*)§or,pdiraddr + 0x1A,2);
- return (u8*)FILE_SECTOR + (sector - 2) * 512;
- }
-
- pdiraddr += 32;
- root_addr++;
- }
- return NULL;
-}
-
-const u8 LOGO[] = {
- 0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF,
- 0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0x00 ,0x00 ,0x00 ,0x7F ,0xC0 ,0x00 ,0x00,
-
- 0x00 ,0x00 ,0x00 ,0x01 ,0xC0 ,0xFF ,0xFF ,0xFF ,0x80 ,0x1F ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFD,
- 0x80 ,0xFF ,0xFF ,0xFF ,0x80 ,0x1F ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFD ,0xFF ,0x00 ,0x00 ,0x00,
-
- 0x7F ,0x9F ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFD ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xCF ,0xFF ,0xFF,
- 0xFF ,0xFF ,0xFF ,0xFD ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xF7 ,0xFF ,0xFF ,0xF0 ,0x00 ,0x03 ,0xFD,
-
- 0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xF8 ,0x00 ,0x00 ,0x07 ,0xFF ,0xFC ,0x01 ,0xFF ,0xFF ,0xFF ,0xFF,
- 0xFF ,0xFE ,0x07 ,0x81 ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0x9F ,0xFF,
-
- 0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0x0F ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF,
- 0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFE ,0x07 ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF,
-
- 0xFF ,0xFF ,0x9F ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0x9F ,0xFF,
- 0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF ,0x9F ,0xFF ,0xFF ,0xFF ,0xFF ,0xFF
-};
-
-/*******************************************************************************
-������: Config_Analysis
-��������:�����ļ�����
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-u8 Config_Analysis(void)
-{
- u32 i,j,k,m,flag;
- u16 file_len;
- u8 t_p[CONFIG_CONT][ROW_CONT];
- u8 str[FILE_CONT];
- u8 is_illegality = 0;
- u8* p_file;
- u16 root_addr;
-
- root_addr = 0;
- m = 0;
- j = 0;
-
- if(p_file = SearchFile("CONFIG TXT",&file_len,&root_addr)){
- memset(t_p, 0x00, CONFIG_CONT * ROW_CONT);
- memcpy((u8*)gFile_con,p_file,512);
- for(k = 0; k < CONFIG_CONT; k++) { //ȡ��CONFIG_CONT ��
- j = 0;
- for(i = m; i < strlen((char *)gFile_con); i++) { //����������ֵ�ַ�������λ��
- if(gFile_con[i] == 0x0D && gFile_con[i + 1] == 0x0A) break;
- else {
- if(j < ROW_CONT) t_p[k][j++] = gFile_con[i];
- m++;
- }
- }
- t_p[k][j] = '\0';
- m = i + 2;
- }
- for(k = 0; k < CONFIG_CONT; k++) { //����CONFIG_CONT ��
- if(memcmp(t_p[k],gKey_words[k],strlen(gKey_words[k])) == 0) { //�ҵ��ؼ���
- flag = 0;
- for(i = strlen(gKey_words[k]); i < strlen((char *)t_p[k]); i++) { //����ֵ�Ƿ�Ϸ�
- if(t_p[k][i] >= '0' && t_p[k][i] <= '9') {
- if(t_p[k][i] == '0') {
- if(k == 6){
- flag = 1;
- break;
- }else {
- flag = 0;
- break;
- }
- }
- flag = 1;
- break;
- } else if((t_p[k][i] != 0x20) && (t_p[k][i] != 0x3d)) {//�ո�ϵȺ�
- flag = 0;
- break;
- }
- }
- if(flag && Cal_Val(t_p[k] + i,k,0)) { //����ֵ�Ϸ�
- Set_Ver(t_p[k] + i,k);
- if(k == 0) sprintf((char *)t_p[k],"T_Standby=%d",device_info.t_standby/10);
- else if (k == 1) sprintf((char *)t_p[k],"T_Work=%d", device_info.t_work/10);
- else if (k == 2) sprintf((char *)t_p[k],"Wait_Time=%d",device_info.wait_time/100);
- else if (k == 3) sprintf((char *)t_p[k],"Idle_Time=%d",device_info.idle_time/100);
- else if (k == 4) sprintf((char *)t_p[k],"T_Step=%d",device_info.t_step/10);
- else if (k == 5) sprintf((char *)t_p[k],"Turn_Off_v=%d",gTurn_offv/10);
- else if (k == 6) sprintf((char *)t_p[k],"TempShowFlag=%d",Get_TemperatureShowFlag());
- else if (k == 7) sprintf((char *)t_p[k],"ZeroP_Ad=%d",gZerop_ad);
- } else {//����ֵ���Ϸ�
- memset(t_p[k],0,strlen((char *)t_p[k]));
- memcpy(t_p[k],gDef_set[k],strlen((char *)gDef_set[k]));
- is_illegality = 1;
- }
- } else {//ľ���ҵ��ؼ���
- memcpy(t_p[k],gDef_set[k],strlen((char *)gDef_set[k]));
- is_illegality = 1;
- }
- }
-
- if(is_illegality || gCalib_flag){
- memset(str, 0x00, FILE_CONT);
- m = 0;
- for(k = 0; k < CONFIG_CONT; k++) {
- strcat((char *)str,(char *)t_p[k]);
- strcat((char *)str,(char *)gSet_range[k]);
- }
- m = strlen((char *)str);
-
- if(m < 256) {
- gDisk_buff[0x400 + root_addr*32 + 0x1C] = m;//strlen((char *)str);//�ļ���С
- gDisk_buff[0x400 + root_addr*32 + 0x1D] = 0;
- } else {
- gDisk_buff[0x400 + root_addr*32 + 0x1C] = m % 256;
- gDisk_buff[0x400 + root_addr*32 + 0x1D] = m / 256;
- }
-
- gRewriteflag[(p_file - ROOT_SECTOR + 0x200) / 0x400] = 1;
- memcpy(p_file, str,strlen((char *)str));
- ReWriteFlsash();
- }
- } else {
- if(p_file = SearchFile("LOGOIN BMP",&file_len,&root_addr)){
- memcpy(str,p_file,254);
- memset(gDisk_buff, 0x00, 0x2600);
- memcpy(ROOT_SECTOR + 32, "LOGOIN BMP",0xC);
- memcpy(FILE_SECTOR + 512, str,254);
- gDisk_buff[0x40B + 32] = 0x0; //����
- *(u32*)(VOLUME_BASE + 32) = VOLUME;
- gDisk_buff[0x41A + 32] = 0x03;//�غ�
- gDisk_buff[0x41C + 32] = 254;//�ļ���С
- } else {
- memset(gDisk_buff, 0x00, 0x2600);
- }
-
- memcpy(ROOT_SECTOR, "CONFIG TXT",0xC);
- memcpy(FAT1_SECTOR, gFat_data,6);
- memcpy(FAT2_SECTOR, gFat_data,6);
-
- m = 0;
- for(k = 0; k < CONFIG_CONT; k++) {
- memcpy(FILE_SECTOR + m, gDef_set[k],strlen((char *)gDef_set[k]));
- m += strlen((char *)gDef_set[k]);
- memcpy(FILE_SECTOR + m, gSet_range[k],strlen((char *)gSet_range[k]));
- m += strlen((char *)gSet_range[k]);
- }
-
- gDisk_buff[0x40B] = 0x0; //����
- *(u32*)VOLUME_BASE = VOLUME;
- gDisk_buff[0x41A] = 0x02;//�غ�
- gDisk_buff[0x41C] = m;//�ļ���С
- ReWrite_All();
- }
-
- gVar[F_TYPE] = HEX;
- gVar[F_FLAG] = RDY;
- gVar[SEG_ST] = 0;
- gV32[OFFSET] = 0;
- gV32[COUNT] = 0;
- gV32[WR_CNT] = 0;
- gV32[RD_CNT] = 0;
- return 0;
-}
-/*******************************************************************************
-������: Disk_SecWrite
-��������:PC �����ļ�ʱд����
-�������:pbuffer �������� diskaddr ��ַ
-���ز���:NULL
-*******************************************************************************/
-void Disk_SecWrite(u8* pbuffer, u32 diskaddr)//PC �������ݵ���
-{
- u8 is_illegality = 0;
- u32 i,j,k,m,flag;
- u8 t_p[CONFIG_CONT][ROW_CONT];
- u8 str[FILE_CONT];
- u8 ver[20];
- static u16 Config_flag = 0;
-
- if(diskaddr == 0x1000) { // Write FAT1 sector
- if(memcmp(pbuffer,(u8*)FAT1_SECTOR, 512)) {
- memcpy((u8*)FAT1_SECTOR, pbuffer, 512);
- gRewriteflag[0] = 1;
- }
- } else if(diskaddr == 0x2800) { // Write FAT2 sector
- if(memcmp(pbuffer,(u8*)FAT2_SECTOR, 512)) {
- memcpy((u8*)FAT2_SECTOR, pbuffer, 512);
- gRewriteflag[0] = 1;
- }
- } else if(diskaddr == 0x4000) { // Write DIR sector
- if(memcmp(pbuffer,(u8*)ROOT_SECTOR, 512)) {
- memcpy((u8*)ROOT_SECTOR, pbuffer, 512);
- gRewriteflag[1] = 1;
- for(i = 0;i < 16;i++){
- memcpy((u8*)ver,(u8*)(pbuffer),12);
- if(memcmp(ver,"CONFIG TXT",11) == 0){
- Config_flag = pbuffer[0x1A];
- break;
- }
- pbuffer += 32;
- }
- }
- } else if(diskaddr >= 0x8000 && diskaddr <= 0xA000) { // Write FILE sector
- if(memcmp(pbuffer,(u8*)(FILE_SECTOR + (diskaddr - 0x8000)), 512)) {
- memcpy((u8*)(FILE_SECTOR + (diskaddr - 0x8000)), pbuffer, 512);
- }
- if((((diskaddr - 0x8000)/0x200) + 2) == Config_flag){
-// /*
- m = 0;
- memset(t_p, 0x00, CONFIG_CONT * ROW_CONT);
- memcpy((u8*)(gFile_con), pbuffer, 512);
-
- for(k = 0; k < CONFIG_CONT; k++) { //ȡ��4 ��
- j = 0;
- for(i = m; i < strlen((char *)gFile_con); i++) { //����������ֵ�ַ�������λ��
- if(gFile_con[i] == 0x0D && gFile_con[i + 1] == 0x0A) break;
- else {
- if(j < ROW_CONT) t_p[k][j++] = gFile_con[i];
- m++;
- }
- }
- t_p[k][j] = '\0';
- m = i + 2;
- }
-
- for(k = 0; k < CONFIG_CONT; k++) { //����k ��
- if(memcmp(t_p[k],gKey_words[k],strlen(gKey_words[k])) == 0) { //�ҵ��ؼ���
- flag = 0;
- for(i = strlen(gKey_words[k]); i < strlen((char *)t_p[k]); i++) { //����ֵ�Ƿ�Ϸ�
- if(t_p[k][i] >= '0' && t_p[k][i] <= '9') {
- if(t_p[k][i] == '0') {
- if(k == 6){
- flag = 1;
- break;
- }else {
- flag = 0;
- break;
- }
- }
- flag = 1;
- break;
- } else if((t_p[k][i] != 0x20) && (t_p[k][i] != 0x3d)) {//�ո�ϵȺ�
- flag = 0;
- break;
- }
- }
- if((!flag) || (!Cal_Val(t_p[k] + i,k,1))) {
- is_illegality = 1;//���Ϸ�
- return ;
- }else{
- Set_Ver(t_p[k] + i,k);
-
- memset(t_p[k],0,strlen((char *)t_p[k]));
- if(k == 0) sprintf((char *)t_p[k],"T_Standby=%d",device_info.t_standby/10);
- else if (k == 1) sprintf((char *)t_p[k],"T_Work=%d", device_info.t_work/10);
- else if (k == 2) sprintf((char *)t_p[k],"Wait_Time=%d",device_info.wait_time/100);
- else if (k == 3) sprintf((char *)t_p[k],"Idle_Time=%d",device_info.idle_time/100);
- else if (k == 4) sprintf((char *)t_p[k],"T_Step=%d",device_info.t_step/10);
- else if (k == 5) sprintf((char *)t_p[k],"Turn_Off_v=%d",gTurn_offv/10);
- else if (k == 6) sprintf((char *)t_p[k],"TempShowFlag=%d",Get_TemperatureShowFlag());
- else if (k == 7) sprintf((char *)t_p[k],"ZeroP_Ad=%d",gZerop_ad);
- }
- } else {//ľ���ҵ��ؼ���
- memcpy(t_p[k],gDef_set[k],strlen((char *)gDef_set[k]));
- is_illegality = 0;
- return ;
- }
- }
-
- if(!is_illegality) {
- memset(str,0,FILE_CONT);
- for(k = 0; k < CONFIG_CONT; k++) {
- strcat((char *)str,(char *)t_p[k]);
- strcat((char *)str,(char *)gSet_range[k]);
- }
- m = strlen((char *)str);
-
- if(m < 256) {
- gDisk_buff[0x400 + (Config_flag - 2)*32 + 0x1C] = m;//strlen((char *)str);//�ļ���С
- gDisk_buff[0x400 + (Config_flag - 2)*32 + 0x1D] = 0;
- } else {
- gDisk_buff[0x400 + (Config_flag - 2)*32 + 0x1C] = m % 256;
- gDisk_buff[0x400 + (Config_flag - 2)*32 + 0x1D] = m / 256;
- }
-
- memcpy((u8*)(FILE_SECTOR),(u8*)str,512);
- gRewriteflag[1] = 1;
- gRewriteflag[((diskaddr - 0x8000 + 0x200) / 0x400) + 1] = 1;
- ReWriteFlsash();
- return ;
- } else{
- return ;
- }
- } else {
- gRewriteflag[((diskaddr - 0x8000 + 0x200) / 0x400) + 1] = 1;
- }//*/
- }
-
- ReWriteFlsash();
-}
-/*******************************************************************************
-������: Disk_SecRead
-��������:PC ��ȡ�ļ�ʱд����
-�������:pbuffer ��ȡ���� diskaddr ��ַ
-���ز���:NULL
-*******************************************************************************/
-void Disk_SecRead(u8* pbuffer, u32 disk_addr)
-{
- Soft_Delay();
- if(disk_addr == 0x0000) { // Read BOOT sector
- memcpy(pbuffer, BOOT_SEC, 512);
- } else if(disk_addr == 0x1000) { // Read FAT1 sector
- memcpy(pbuffer, FAT1_SECTOR, 512);
- } else if(disk_addr == 0x2800) { // Read FAT2 sector
- memcpy(pbuffer, FAT2_SECTOR, 512);
- } else if(disk_addr == 0x4000) { // Read DIR sector
- memcpy(pbuffer, (u8*)(ROOT_SECTOR), 512);
- } else if(disk_addr >= 0x8000 && disk_addr <= 0xA000) { // Read FILE sector
- memcpy(pbuffer, (u8*)(APP_BASE + 0x600 + (disk_addr - 0x8000)), 512);
- } else {
- memset(pbuffer, 0, 512);//
- }
-}
-/*******************************************************************************
-������: ReWriteFlsash
-��������:дFlash
-�������:NULL
-���ز���:�Ƿ�д���־
-*******************************************************************************/
-u8 ReWriteFlsash(void)
-{
- u32 i,j;
- u8 result;
- u16 *f_buff;
-
- FLASH_Unlock();
- for(i = 0; i < 16; i++) {
- if(gRewriteflag[i]) {
- gRewriteflag[i] = 0;
- FLASH_Erase(APP_BASE + i * 0x400);
- f_buff = (u16*)&gDisk_buff[i * 0x400];
- for(j = 0; j < 0x400; j += 2) {
- result = FLASH_Prog((u32)(APP_BASE + i*0x400 + j),*f_buff++);
- if(result != FLASH_COMPLETE){
- FLASH_Lock();
- return ERR;
- }
- }
- break;
- }
- }
- FLASH_Lock();
- return RDY;
-}
-/*******************************************************************************
-������: ReWrite_All
-��������:��������flash�������
-�������:NULL
-���ز���:�Ƿ�д���־
-*******************************************************************************/
-u8 ReWrite_All(void)
-{
- u16 i;
- u8 result;
- u16 *f_buff = (u16*)gDisk_buff;
-
- FLASH_Unlock();
- for(i = 0; i < 9; i++)FLASH_Erase(APP_BASE + i*0x400);
- for(i = 0; i < 0X2600; i += 2) {
- result = FLASH_Prog((u32)(APP_BASE + i),*f_buff++);
- if(result != FLASH_COMPLETE) return ERR;
- }
- FLASH_Lock();
- return RDY;
-}
-/*******************************************************************************
-������: Erase
-��������:��ʽ��Flash
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Erase(void)
-{
- u16 i;
- FLASH_Unlock();
- for(i = 0; i < 9; i++)FLASH_Erase(APP_BASE + i*0x400);
-
- FLASH_Lock();
-}
-/*******************************************************************************
-������: Read_Memory
-��������:����microSD���Ķ�������
-�������:r_offset ƫ�� r_length����
-���ز���:NULL
-*******************************************************************************/
-void Read_Memory(u32 r_offset, u32 r_length)
-{
- static u32 offset, length, block_offset;
-
- if (gVar[USB_ST] == TXFR_IDLE ) {
- offset = r_offset * SECTOR_SIZE;
- length = r_length * SECTOR_SIZE;
- gVar[USB_ST] = TXFR_ONGOING;
- }
- if (gVar[USB_ST] == TXFR_ONGOING ) {
- if (!gV32[RD_CNT]) {
- Disk_SecRead(gBuff, offset);
- UserToPMABufferCopy(gBuff, ENDP1_TXADDR, BULK_MAX_PACKET_SIZE);
- gV32[RD_CNT] = SECTOR_SIZE - BULK_MAX_PACKET_SIZE;
- block_offset = BULK_MAX_PACKET_SIZE;
- } else {
- UserToPMABufferCopy(gBuff + block_offset, ENDP1_TXADDR, BULK_MAX_PACKET_SIZE);
- gV32[RD_CNT] -= BULK_MAX_PACKET_SIZE;
- block_offset += BULK_MAX_PACKET_SIZE;
- }
- SetEPTxCount(ENDP1, BULK_MAX_PACKET_SIZE);
- SetEPTxStatus(ENDP1, EP_TX_VALID);
- offset += BULK_MAX_PACKET_SIZE;
- length -= BULK_MAX_PACKET_SIZE;
-
- CSW.dDataResidue -= BULK_MAX_PACKET_SIZE;
- }
- if (length == 0) {
- gV32[RD_CNT] = 0;
- block_offset = 0;
- offset = 0;
- Bot_State = BOT_DATA_IN_LAST;
- gVar[USB_ST] = TXFR_IDLE;
- }
-}
-/*******************************************************************************
-������: Write_Memory
-��������:����microSD���������
-�������:r_offset ƫ�� r_length����
-���ز���:NULL
-*******************************************************************************/
-void Write_Memory (u32 w_offset, u32 w_length)
-{
- static u32 offset, length;
- u32 idx, temp = gV32[WR_CNT] + 64;
-
- if (gVar[USB_ST] == TXFR_IDLE ) {
- offset = w_offset * SECTOR_SIZE;
- length = w_length * SECTOR_SIZE;
- gVar[USB_ST] = TXFR_ONGOING;
- }
- if (gVar[USB_ST] == TXFR_ONGOING ) {
- for (idx = 0 ; gV32[WR_CNT] < temp; gV32[WR_CNT]++)
- *(u8 *)(gBuff + gV32[WR_CNT]) = Bulk_Buff[idx++];
-
- offset += Data_Len;
- length -= Data_Len;
-
- if (!(length % SECTOR_SIZE)) {
- gV32[WR_CNT] = 0;
- Disk_SecWrite(gBuff, offset - SECTOR_SIZE);
- }
-
- CSW.dDataResidue -= Data_Len;
- SetEPRxStatus(ENDP2, EP_RX_VALID); /* enable the next transaction*/
- }
- if ((length == 0) || (Bot_State == BOT_CSW_Send)) {
- gV32[WR_CNT] = 0;
- Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
- gVar[USB_ST] = TXFR_IDLE;
- }
-}
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/Ext_Flash.c b/S100App/Src/Ext_Flash.c deleted file mode 100644 index 15016241..00000000 --- a/S100App/Src/Ext_Flash.c +++ /dev/null @@ -1,198 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. ********************
-File Name : EXT_Flash.c
-Version : S100 APP Ver 2.11
-Description:
-Author : bure
-Data:
-History:
-*******************************************************************************/
-
-#include <string.h>
-#include <stdio.h>
-#include "Ext_Flash.h"
-#include "BIOS.h"
-
-
-#define OK 0 // �������
-#define SEC_ERR 1 // ���������
-#define TMAX 100000 // ��ʱ����
-
-u32 Mass_Memory_Size;
-u32 Mass_Block_Size;
-u32 Mass_Block_Count;
-u32 Tout;
-
-
-u8 flash_mode;
-
-void ExtFLASH_SectorErase(u32 SectorAddr);
-
-/*******************************************************************************
- SPI_FLASH_SectorErase : Sector Erases the specified FLASH Page.(4k/sector)
-*******************************************************************************/
-void ExtFLASH_SectorErase(u32 SectorAddr)
-{
- ExtFlash_WriteEnable();
- ExtFlash_CS_LOW();
- ExtFlash_SendByte(SE);
- ExtFlash_SendByte((SectorAddr & 0xFF0000) >> 16); //Send high address byte
- ExtFlash_SendByte((SectorAddr & 0xFF00) >> 8); //Send medium address byte
- ExtFlash_SendByte(SectorAddr & 0xFF); //Send low address byte
- ExtFlash_CS_HIGH();
- ExtFlash_WaitForWriteEnd(); // Wait the end of Flash writing
-}
-
-
-void ExtFlash_PageWR(u8* pBuffer, u32 WriteAddr)
-{
- u32 addr,i,j;
- u8* ptr;
- u8 page=0,flag=0,write_mode;
- u8 buffer[256];
-
- flag=0;
- if(flash_mode==FLASH_8M) {
- addr=WriteAddr & 0xFFF000;
- page=16;
- } else {
- page=1;
- addr=WriteAddr & 0xFFFF00;
- }
- while(page>0) {
- ExtFlash_PageRD((u8*)&buffer,addr, 256);
- for(j=0; j<255; j++) {
- if(buffer[j++]!=0xff) {
- flag=1;
- break;
- }
- }
- addr+=256;
- page--;
- }
- if(flash_mode==FLASH_8M) {
- page=16;
- addr=WriteAddr & 0xFFF000;
- if(flag==1)ExtFLASH_SectorErase(addr);
- write_mode=PP;
- } else {
- page=1;
- addr=WriteAddr & 0xFFFF00;
- if(flag==1)write_mode=PW;
- else write_mode=PP;
- }
- ptr=pBuffer;
- for(i=0; i<page; i++) {
- ExtFlash_PageProg(ptr, addr,write_mode);
- addr+=256;
- ptr+=256;
- }
-}
-
-/*******************************************************************************
- дFLASHҳ(256 Bytes)�� Mode=0: ��0��1���ݸ�д Mode=1: ������д
-*******************************************************************************/
-void ExtFlash_PageProg(u8* pBuffer, u32 WriteAddr,u8 CMD)
-{
- u16 Lenght = 256;
-
- ExtFlash_CS_HIGH();
- ExtFlash_WaitForWriteEnd();
- ExtFlash_WriteEnable();
- ExtFlash_CS_LOW();
- ExtFlash_SendByte(CMD);
- ExtFlash_SendByte((WriteAddr & 0xFF0000) >> 16);
- ExtFlash_SendByte((WriteAddr & 0xFF00) >> 8);
- ExtFlash_SendByte(WriteAddr & 0xFF);
- while(Lenght--) { // while there is data to be written on the FLASH
- ExtFlash_SendByte((*pBuffer));
- pBuffer++;
- }
- ExtFlash_CS_HIGH();
- ExtFlash_WaitForWriteEnd();
-}
-
-/*******************************************************************************
- SPI_FLASH_BufferRead
-*******************************************************************************/
-void ExtFlash_PageRD(u8* pBuffer, u32 ReadAddr, u16 Lenght)
-{
- ExtFlash_CS_HIGH();
- ExtFlash_WaitForWriteEnd();
- ExtFlash_CS_LOW();
- ExtFlash_SendByte(READ);
- ExtFlash_SendByte((ReadAddr & 0xFF0000) >> 16);
- ExtFlash_SendByte((ReadAddr& 0xFF00) >> 8);
- ExtFlash_SendByte(ReadAddr & 0xFF);
-
- while(Lenght--) { // while there is data to be read
- *pBuffer = (ExtFlash_SendByte(Dummy_Byte));
- pBuffer++;
- }
- ExtFlash_CS_HIGH();
-}
-/*******************************************************************************
- SPI_FLASH_ReadByte
-*******************************************************************************/
-u8 ExtFlash_ReadByte(void)
-{
- return (ExtFlash_SendByte(Dummy_Byte));
-}
-
-/*******************************************************************************
- SPI_FLASH_SendByte
-*******************************************************************************/
-u8 ExtFlash_SendByte(u8 byte)
-{
- Tout = 0;
- while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_TXE) == RESET) {
- if(Tout++ > TMAX) return 255;
- }
- SPI_I2S_SendData(SPI3, byte);
- Tout = 0;
- while(SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_RXNE) == RESET) {
- if(Tout++ > TMAX) return 255;
- }
- return SPI_I2S_ReceiveData(SPI3);
-}
-/*******************************************************************************
- SPI_FLASH_WriteEnable
-*******************************************************************************/
-void ExtFlash_WriteEnable(void)
-{
- ExtFlash_CS_LOW();
- ExtFlash_SendByte(WREN);
- ExtFlash_CS_HIGH();
-}
-/*******************************************************************************
- SPI_FLASH_WaitForWriteEnd
-*******************************************************************************/
-void ExtFlash_WaitForWriteEnd(void)
-{
- u8 FLASH_Status = 0;
-
- ExtFlash_CS_LOW();
- ExtFlash_SendByte(RDSR);
- Tout = 0;
- do {
- FLASH_Status = ExtFlash_SendByte(Dummy_Byte);
- if(Tout++ > TMAX) return;
- } while((FLASH_Status & WIP_Flag) == SET); // Write in progress
- ExtFlash_CS_HIGH();
-}
-/*******************************************************************************
- MAL_GetStatus
-*******************************************************************************/
-void MAL_GetStatus (void)
-{
- if(flash_mode==FLASH_8M) {
- Mass_Block_Count = 2048; //FLASH_SIZE/FLASH_PAGE_SIZE;
- Mass_Block_Size = 512*8; //FLASH_PAGE_SIZE; 4096
- Mass_Memory_Size = 512*4096*4 ; //FLASH_SIZE; 0x800000;
- } else {
- Mass_Block_Count = 4096; //FLASH_SIZE/FLASH_PAGE_SIZE; 4096
- Mass_Block_Size = 512; //FLASH_PAGE_SIZE;
- Mass_Memory_Size = 512*4096 ; //FLASH_SIZE; 0x200000;
- }
-}
-
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/Flash.c b/S100App/Src/Flash.c deleted file mode 100644 index ce7ca2e4..00000000 --- a/S100App/Src/Flash.c +++ /dev/null @@ -1,32 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. ********************
- File Name : Flash.c
- Version : Author : bure
-*******************************************************************************/
-#include "APP_Version.h"
-#include "Flash.h"
-#include "Bios.h"
-
-u8 ExtFlashSendByte(u8 byte);
-void ExtFlashWaitForWriteEnd(void);
-
-/*******************************************************************************
- FLASH_Prog:
-*******************************************************************************/
-u8 FLASH_Prog(u32 Address, u16 Data)
-{
- if(FLASH_WaitForLastOperation(WAIT_TIMES)!=FLASH_TIMEOUT)
- FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
- return FLASH_ProgramHalfWord(Address, Data);
-}
-/*******************************************************************************
- FLASH_Erase:
-*******************************************************************************/
-void FLASH_Erase(u32 Address)
-{
- if(Address%FLASH_PAGE == 0) { // FLASH Page start (1K/Page)
- if(FLASH_WaitForLastOperation(WAIT_TIMES)!=FLASH_TIMEOUT)
- FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);
- FLASH_ErasePage(Address); // FLASH Page erase
- }
-}
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/HARDWARE.c b/S100App/Src/HARDWARE.c deleted file mode 100644 index 5e1fc965..00000000 --- a/S100App/Src/HARDWARE.c +++ /dev/null @@ -1,383 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : CTRL.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/07
-History:
-2015/07/07 ͳһ������
-2015/07/20 �Ӵ��¶ȱ�������
-*******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include "APP_Version.h"
-#include "HARDWARE.h"
-#include "CTRL.h"
-#include "bios.h"
-#include "HARDWARE.h"
-#include "UI.h"
-/******************************************************************************/
-#define CAL_AD 250
-const u32 gVol[] = {3900,2760,1720,584};
-const u16 gRate[] = {300,150,90,40};
-s32 gZerop_ad = 239;
-u32 gTurn_offv = 100;
-u8 gCalib_flag = 0;
-vu16 gMeas_cnt= 0;/* Measure*/
-u32 gKey_in;
-u8 gLongkey_flag = 0;
-u8 gAlarm_type = 1;
-/*******************************************************************************
-������: Get_CalFlag
-��������:��ȡУ״̬
-�������:NULL
-���ز���:У״̬��־
-*******************************************************************************/
-u32 Get_CalFlag(void)
-{
- return gCalib_flag;
-}
-
-/*******************************************************************************
-������: Get_gKey
-��������:��ȡ����״̬
-�������:NULL
-���ز���:����״̬
-*******************************************************************************/
-u32 Get_gKey(void)
-{
- return gKey_in;
-}
-/*******************************************************************************
-������: Set_gKey
-��������:���ð���״̬
-�������:Ҫ���õİ���״̬
-���ز���:NULL
-*******************************************************************************/
-void Set_gKey(u32 key)
-{
- gKey_in = key;
-}
-/*******************************************************************************
-������: Set_LongKeyFlag
-��������:���ó�������־
-�������:0 :�����Գ����� 1: ���Գ���
-���ز���:NULL
-*******************************************************************************/
-void Set_LongKeyFlag(u32 flag)
-{
- gLongkey_flag = flag;
-}
-/*******************************************************************************
-������: Get_AlarmType
-��������:��ȡ��������
-�������:NULL
-���ز���: ��������
- 0:����
- 1:sen - err
- 2:����
- 3:��ѹ
-*******************************************************************************/
-u8 Get_AlarmType(void)
-{
- return gAlarm_type;
-}
-/*******************************************************************************
-������: Set_AlarmType
-��������:��������
-�������: ��������
- 0:����
- 1:sen - err
- 2:����
- 3:��ѹ
-���ز���:NULL
-*******************************************************************************/
-void Set_AlarmType(u8 type)
-{
- gAlarm_type = type;
-}
-/*******************************************************************************
-������: Read_Vb
-��������:��ȡ��Դ��ѹֵ
-�������:��־
-���ز���:NULL
-*******************************************************************************/
-int Read_Vb(u8 flag)
-{
- u32 tmp,i,sum = 0;
-
- for(i = 0; i < 10; i++) {
- tmp = ADC_GetConversionValue(ADC2);
- sum += tmp;
- }
- tmp = sum/10;
- if(tmp >= (gVol[0] + gVol[0]/100)) {
- gAlarm_type = HIGH_VOLTAGE;
- return H_ALARM; //����3500
- }
- tmp = (tmp*10/144);//��ѹvb = 3.3 * 85 *ad / 40950
-
- for(i = 0; i < 4; i++) {
- if(i == 2) {
- if(flag == 0 ) {
- if(tmp >= gRate[i])break;
- } else {
- if(tmp >= gTurn_offv)break;
- }
- } else {
- if(tmp >= gRate[i])break;
- }
- }
- return (i+1);
-}
-/*******************************************************************************
-������: Scan_Key
-��������:ɨ�����(50msÿ��)
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Scan_Key(void)
-{
- static u32 p_cnt = 0,key_statuslast = 0;
- u32 key_state = 0;
-
- if((~GPIOA->IDR) & 0x0200) key_state |= KEY_V1; //KEY_V1
- if((~GPIOA->IDR) & 0x0040) key_state |= KEY_V2; //KEY_V2
-
- if(key_state == 0) return ;
-
- if(gLongkey_flag == 1) { //LongKey_flag :���Ƴ�������־
- if(key_statuslast == key_state) {
- p_cnt++;
- if(p_cnt > 21) Set_gKey(KEY_CN | key_state);//������
- } else {
- p_cnt = 0;
- key_statuslast = key_state;
- Set_gKey(key_state);
- }
- } else {
- p_cnt = 0;
- key_statuslast = key_state;
- Set_gKey(key_state);
- }
-
-}
-
-/*******************************************************************************
-������: Get_SlAvg
-��������:����ƽ��ֵ
-�������:avg_data ƽ����ADֵ
-���ز���:����ƽ��ֵ
-*******************************************************************************/
-u32 Get_SlAvg(u32 avg_data)
-{
- static u32 sum_avg = 0;
- static u8 init_flag = 0;
- u16 si_avg = sum_avg/SI_COE,abs;
-
- if(init_flag == 0) { /*��һ���ϵ�*/
- sum_avg = SI_COE * avg_data;
- init_flag = 1;
- return sum_avg/SI_COE;
- }
- if (avg_data > si_avg) abs = avg_data - si_avg;
- else abs = si_avg - avg_data;
-
- if(abs > SI_THRESHOLD) sum_avg = SI_COE * avg_data;
- else sum_avg += avg_data - sum_avg/SI_COE;
-
- return sum_avg/SI_COE;
-}
-
-/*******************************************************************************
-������: Get_AvgAd
-��������:��ȡ�������ȶ�ADƽ��ֵ
-�������:NULL
-���ز���:ADƽ��ֵ
-*******************************************************************************/
-u32 Get_AvgAd(void)
-{
- static u32 ad_sum = 0;
- static u32 max = 0,min = 5000;
- u32 ad_value,avg_data,slide_data;
-
- Set_HeatingTime(0);
- HEAT_OFF();
- Delay_HalfMs(25);
- gMeas_cnt = 10;
-
- while(gMeas_cnt > 0) {
- ad_value = Get_AdcValue(0);//Read_Tmp();
- ad_sum += ad_value;
- if(ad_value > max) max = ad_value;
- if(ad_value < min) min = ad_value;
-
- if(gMeas_cnt == 1) {
- ad_sum = ad_sum - max - min;
- avg_data = ad_sum / 8;
-
- slide_data = Get_SlAvg(avg_data);
- ad_sum = 0;
- min = 5000;
- max = 0;
- }
- gMeas_cnt--;
- }
- return slide_data;//gSlide_data;
-}
-
-/*******************************************************************************
-������: Get_TempSlAvg
-��������:����¶Ȼ���ƽ��ֵ
-�������:avg_data ����¶�ƽ��ֵ
-���ز���:����¶Ȼ���ƽ��ֵ
-*******************************************************************************/
-int Get_TempSlAvg(int avg_data)
-{
- static int sum_avg = 0;
- static u8 init_flag = 0;
-
- if(init_flag == 0) { /*��һ���ϵ�*/
- sum_avg = 8 * avg_data;
- init_flag = 1;
- return sum_avg/8;
- }
-
- sum_avg += avg_data - sum_avg/8;
-
- return sum_avg/8;
-}
-
-/*******************************************************************************
-������: Get_SensorTmp
-��������:��ȡ����¶�
-�������:NULL
-���ز���:��ȡ����¶�
-*******************************************************************************/
-int Get_SensorTmp(void)
-{
- static u32 ad_sum = 0;
- static u32 max = 0,min = 5000;
- u32 ad_value,avg_data,slide_data;
- int sensor_temp = 0;
-
- gMeas_cnt = 10;
-
- while(gMeas_cnt > 0) {
- ad_value = Get_AdcValue(1);
- ad_sum += ad_value;
- if(ad_value > max) max = ad_value;
- if(ad_value < min) min = ad_value;
-
- if(gMeas_cnt == 1) {
- ad_sum = ad_sum - max - min;
- avg_data = ad_sum / 8;
-
- slide_data = Get_TempSlAvg(avg_data);
- sensor_temp = (250 + (3300*slide_data/4096)-750);//(25 + ((10*(33*gSlide_data)/4096)-75));
- ad_sum = 0;
- min = 5000;
- max = 0;
- }
- gMeas_cnt--;
- }
- return sensor_temp;
-}
-
-/*******************************************************************************
-������: Zero_Calibration
-��������:���AD
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Zero_Calibration(void)
-{
- u32 zerop;
- int cool_tmp;
-
- zerop = Get_AvgAd();
- cool_tmp = Get_SensorTmp();
-
- if(zerop >= 400) {
- gCalib_flag = 2;
- } else {
- if(cool_tmp < 300) {
- gZerop_ad = zerop;
- gCalib_flag = 1;
- } else {
- gCalib_flag = 2;
- }
- }
-}
-/*******************************************************************************
-������: Get_Temp
-��������:�������,�ȶ��¶�,����AD�����¶�
-�������:wk_temp �����¶�
-���ز���:ʵ���¶�
-*******************************************************************************/
-s16 Get_Temp(s16 wk_temp)
-{
- int ad_value,cool_tmp,compensation = 0;
- static u16 cnt = 0,h_cnt = 0;
- s16 rl_temp = 0;
-
- ad_value = Get_AvgAd();
- cool_tmp = Get_SensorTmp();
-
- if(ad_value == 4095) h_cnt++;
- else {
- h_cnt = 0;
- if(ad_value > 3800 && ad_value < 4095) cnt++; //20150720��
- else cnt = 0;
- }
- if(h_cnt >= 60&& cnt == 0) gAlarm_type = SEN_ERR; //Sen-err
- if(h_cnt == 0 && cnt >= 10) gAlarm_type = HIGH_TEMP; //����
- if(h_cnt < 60 && cnt < 10) gAlarm_type = NORMAL_TEMP;
-
- compensation = 80 + 150 * (wk_temp - 1000) / 3000;
- if(wk_temp == 1000) compensation -= 10;
-
- if(wk_temp != 0) {
- if(ad_value > (compensation + gZerop_ad)) ad_value -= compensation;
- }
- if(cool_tmp > 400) cool_tmp = 400;
- rl_temp = (ad_value * 1000 + 806 * cool_tmp - gZerop_ad * 1000)/806;
-
- return rl_temp;
-}
-
-/*******************************************************************************
-������: Start_Watchdog
-��������:��ʼ�����Ź�
-�������:ms ���Ź�����
-���ز���:����1
-*******************************************************************************/
-u32 Start_Watchdog(u32 ms)
-{
- IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
-
- /* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz (min:0.8ms -- max:3276.8ms */
- IWDG_SetPrescaler(IWDG_Prescaler_32);
-
- /* Set counter reload value to XXms */
- IWDG_SetReload(ms*10/8);
-
- /* Reload IWDG counter */
- IWDG_ReloadCounter();
-
- /* Enable IWDG (the LSI oscillator will be enabled by hardware) */
- IWDG_Enable();
- return 1;
-}
-/*******************************************************************************
-������: Clear_Watchdog
-��������:���ÿ��Ź�����
-�������:NULL
-���ز���:����1
-*******************************************************************************/
-u32 Clear_Watchdog(void)
-{
- IWDG_ReloadCounter();
- return 1;
-}
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/I2C.c b/S100App/Src/I2C.c deleted file mode 100644 index f48e8a38..00000000 --- a/S100App/Src/I2C.c +++ /dev/null @@ -1,229 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : I2C.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/20
-History:
-2015/07/07 ͳһ������
-2015/07/21 I2C_DELAYTIME = 2;
-*******************************************************************************/
-
-#include "stm32f10x.h"
-#include "I2C.h"
-#include "Bios.h"
-#include "oled.h"
-#include "S100V0_1.h"
-
-// --------- ����I2C�ӿ���ض���-------- //
-#define SDA GPIO_Pin_7
-#define SCL GPIO_Pin_6
-
-#define HIGH 1
-#define LOW 0
-
-#define SDA_VAL GPIO_ReadInputDataBit(GPIOB, SDA)
-#define SCL_VAL GPIO_ReadInputDataBit(GPIOB, SCL)
-
-#define I2C_MORE 1
-#define I2C_LAST 0
-#define I2C_TIMEOUT 255
-
-#define FAILURE 0
-#define SUCCEED 1
-#define I2C_DELAYTIME 2
-
-static void Sim_I2C_Set(u8 pin, u8 status);
-static void Sim_I2C_Stop(void);
-static void Sim_I2C_Start(void);
-static u8 Sim_I2C_RD_Byte(u8 more);
-static u8 Sim_I2C_WR_Byte(u8 data);
-
-/*******************************************************************************
-������: Delay_uS
-��������: ������ʱ
-�������:us
-���ز���:NULL
-*******************************************************************************/
-void Delay_uS(u32 us)
-{
- while(us) us--;
-}
-/*******************************************************************************
-������: I2C_Configuration
-��������: ����I2C
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void I2C_Configuration(void)
-{
- GPIO_InitTypeDef GPIO_InitStructure;
- I2C_InitTypeDef I2C_InitStructure;
-
- GPIO_Init_OLED();
- /* PB6,7 SCL and SDA */
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- /* I2C1 configuration ------------------------------------------------------*/
- I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
- I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
- I2C_InitStructure.I2C_OwnAddress1 = DEVICEADDR_OLED;
- I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
- I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
- I2C_InitStructure.I2C_ClockSpeed = 100000;//100k
- I2C_Init(I2C1, &I2C_InitStructure);
- I2C_Cmd(I2C1, ENABLE);
-}
-
-/*******************************************************************************
-������: I2C_Configuration
-��������: ����I2C
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Sim_I2C_Set(u8 pin, u8 status)
-{
- if(status == HIGH) GPIO_SetBits (GPIOB, pin);
- if(status == LOW) GPIO_ResetBits(GPIOB, pin);
-}
-/*******************************************************************************
-������: Sim_I2C_Start
-��������: ��ʼ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Sim_I2C_Start(void)
-{
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // I2C_PIN_EN();
- GPIO_InitStructure.GPIO_Pin = SCL | SDA;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init (GPIOB, &GPIO_InitStructure);
-
- Sim_I2C_Set(SCL, LOW); // SCL low
- Sim_I2C_Set(SDA, HIGH); // SDA float, set as output high
- Sim_I2C_Set(SCL, HIGH); // SCL high
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SDA, LOW); // SDA high->low while sclk high, S state occur...
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, LOW); // SCL low
-}
-/*******************************************************************************
-������: Sim_I2C_Stop
-��������: ֹͣ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Sim_I2C_Stop(void)
-{
- Sim_I2C_Set(SCL, LOW); // SCL low
- Sim_I2C_Set(SDA, LOW); // SDA low
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, HIGH); // SCL high
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SDA, HIGH); // SDA low->high while sclk high, P state occur
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, LOW); // SCL low
- Delay_uS(I2C_DELAYTIME);
-}
-/*******************************************************************************
-������: Sim_I2C_WR_Byte
-��������:��I2Cд��λ����
-�������:dataҪд�������
-���ز���:NULL
-*******************************************************************************/
-u8 Sim_I2C_WR_Byte(u8 data)
-{
- u8 i = 8;
-
- while(i--) { //send out a bit by sda line.
- Sim_I2C_Set(SCL, LOW); // sclk low
- if(data & 0x80) Sim_I2C_Set(SDA, HIGH); // send bit is 1
- else Sim_I2C_Set(SDA, LOW); // send bit is 0
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, HIGH); // SCL high
- Delay_uS(I2C_DELAYTIME);
- data <<=1; // left shift 1 bit, MSB send first.
- }
- Sim_I2C_Set(SCL, LOW); // SCL low
- Sim_I2C_Set(SDA, HIGH); // SDA set as input
- for(i=I2C_TIMEOUT; i!=0; i--) { // wait for sda low to receive ack
- Delay_uS(I2C_DELAYTIME);
- if (!SDA_VAL) {
- Sim_I2C_Set(SCL, HIGH); // SCL high
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, LOW); // SCL_LOW();
- Delay_uS(I2C_DELAYTIME);
- return SUCCEED;
- }
- }
- return FAILURE;
-}
-/*******************************************************************************
-������: Sim_I2C_RD_Byte
-��������:��I2C�������
-�������:more
-���ز���:�����İ�λ����
-*******************************************************************************/
-u8 Sim_I2C_RD_Byte(u8 more)
-{
- u8 i = 8, byte = 0;
-
- Sim_I2C_Set(SDA, HIGH); // SDA set as input
- while(i--) {
- Sim_I2C_Set(SCL, LOW); // SCL low
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, HIGH); // SCL high
- Delay_uS(I2C_DELAYTIME);
- byte <<=1; //recv a bit
- if (SDA_VAL) byte |= 0x01;
- }
- Sim_I2C_Set(SCL, LOW);
- if(!more) Sim_I2C_Set(SDA, HIGH); //last byte, send nack.
- else Sim_I2C_Set(SDA, LOW); //send ack
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, HIGH); // SCL_HIGH();
- Delay_uS(I2C_DELAYTIME);
- Sim_I2C_Set(SCL, LOW);
- return byte;
-}
-/*******************************************************************************
-������: I2C_PageWrite
-��������:�� ��ַ deviceaddr д��numbyte���ֽڵ����ݣ�д���������pbuf
-�������:pbuf д������ݣ�numbyte Ϊд����ֽ�����deviceaddrΪд��ĵ�ַ
-���ز���:NULL
-*******************************************************************************/
-void I2C_PageWrite(u8* pbuf, u8 numbyte,u8 deviceaddr )
-{
- Sim_I2C_Start();
- Sim_I2C_WR_Byte(deviceaddr<<1);
- while(numbyte--) Sim_I2C_WR_Byte(*pbuf++);
- Sim_I2C_Stop();
-}
-/*******************************************************************************
-������: I2C_PageRead
-��������:��I2C�������
-�������: pbuf �������Ĵ�ŵ�ַ numbyteΪ���������ֽ���
- deviceaddr�豸��ַ readaddr��ȡ�����ݵ�ַ
-���ز���:�����İ�λ����
-*******************************************************************************/
-void I2C_PageRead(u8* pbuf, u8 numbyte,u8 deviceaddr, u8 readaddr)
-{
- Sim_I2C_Start();
- Sim_I2C_WR_Byte(deviceaddr<<1);
- Sim_I2C_WR_Byte(readaddr);
- Sim_I2C_Start();
- Sim_I2C_WR_Byte((deviceaddr<<1)|1);
-
- while(numbyte--) {
- if(numbyte) *pbuf++ = Sim_I2C_RD_Byte(I2C_MORE);
- else *pbuf++ = Sim_I2C_RD_Byte(I2C_LAST);
- }
- Sim_I2C_Stop();
-}
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/Interrupt.c b/S100App/Src/Interrupt.c deleted file mode 100644 index ba78fbd0..00000000 --- a/S100App/Src/Interrupt.c +++ /dev/null @@ -1,79 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. *******************/
-/* Brief : Interrupt Service Routines Author : bure */
-/******************************************************************************/
-#include "Interrupt.h"
-#include "usb_istr.h"
-#include "Bios.h"
-#include "I2C.h"
-
-/******************************************************************************/
-/* Processor Exceptions Handlers */
-/******************************************************************************/
-
-void NMI_Handler(void)
-{
- ;
-}
-
-void HardFault_Handler(void)
-{
- while (1);
-}
-
-void MemManage_Handler(void)
-{
- while (1);
-}
-
-void BusFault_Handler(void)
-{
- while (1);
-}
-
-void UsageFault_Handler(void)
-{
- while (1);
-}
-
-void SVC_Handler(void) {}
-
-void DebugMon_Handler(void) {}
-
-void PendSV_Handler(void) {}
-
-void SysTick_Handler(void) {}
-
-/******************************************************************************/
-/* Peripherals Interrupt Handlers */
-/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
-/* available peripheral interrupt handler's name please refer to the startup */
-/* file (startup_stm32f30x.s). */
-/******************************************************************************/
-
-void USB_LP_CAN1_RX0_IRQHandler(void)
-{
- USB_Istr();
-}
-/*
-void I2C1_EV_IRQHandler(void)
-{
- I2C1_EV_ISR();
-}
-
-void I2C1_ER_IRQHandler(void)
-{
- I2C1_ER_ISR();
-}
-*/
-void TIM2_IRQHandler(void)
-{
- TIM2_ISR();
-}
-
-void TIM3_IRQHandler(void)
-{
- TIM3_ISR();
-}
-
-/********************************* END OF FILE ******************************/
-
diff --git a/S100App/Src/MMA8652FC.c b/S100App/Src/MMA8652FC.c deleted file mode 100644 index b919ee55..00000000 --- a/S100App/Src/MMA8652FC.c +++ /dev/null @@ -1,268 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : MMA8652FC.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/07
-History:
-2015/07/07 ͳһ������
-*******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include "APP_Version.h"
-#include "Bios.h"
-#include "Oled.h"
-#include "MMA8652FC.h"
-#include "I2C.h"
-#include "CTRL.h"
-#include "UI.h"
-//------------------------------------------------------------------//
-
-static int IIC_RegWrite(u8 reg,u8 data);
-static int IIC_RegRead(u8 reg);
-static int Read_ZYXDr(void);
-
-u16 gactive = 0,gShift = 0;
-u8 gMmatxdata;
-
-typedef struct {
- u8 hi;
- u8 lo;
-} DRByte;
-typedef struct {
- DRByte Byte;
-
-} DR_Value;
-
-DR_Value gX_value,gY_value,gZ_value;
-
-/*******************************************************************************
-������: Get_MmaActive
-��������:��ȡ���ٶȴ���������״̬
-�������:NULL
-���ز���:���ٶȴ�����״̬
-*******************************************************************************/
-u16 Get_MmaActive(void)
-{
- return gactive;
-}
-/*******************************************************************************
-������: Get_MmaActive
-��������:XXXXXXXXXXXXXXXXXXXXXX
-�������:XXXXXXXXXXXXXXXXXXXXXX
-���ز���:XXXXXXXXXXXXXXXXXXXXXX
-*******************************************************************************/
-u16 Get_MmaShift(void)
-{
- return gShift;
-}
-/*******************************************************************************
-������: Get_MmaActive
-��������:XXXXXXXXXXXXXXXXXXXXXX
-�������:XXXXXXXXXXXXXXXXXXXXXX
-���ز���:XXXXXXXXXXXXXXXXXXXXXX
-*******************************************************************************/
-void Set_MmaShift(u16 shift)
-{
- gShift = shift;
-}
-
-/*******************************************************************************
-������: IIC_RegWrite
-��������:��Reg��ַд��Data
-�������:Reg �����еĵ�ַ��Data����
-���ز���: �ɹ���
-*******************************************************************************/
-int IIC_RegWrite(u8 reg,u8 data)
-{
- u8 tx_data[20];
-
- tx_data[0]=reg;
- tx_data[1]=data;
- I2C_PageWrite(tx_data,2,DEVICE_ADDR);
- return 1;
-}
-/*******************************************************************************
-������: IIC_RegRead
-��������:������Reg����������
-�������:Reg �����еĵ�ַ������gMmatxdata��
-���ز���: �ɹ���
-*******************************************************************************/
-int IIC_RegRead(u8 reg)
-{
- u8 tx_data[20];
- tx_data[0] = reg;
-
- I2C_PageRead(tx_data, 1, DEVICE_ADDR, reg);
- gMmatxdata = tx_data[0];
- return 1;
-}
-/*******************************************************************************
-������: MMA865x_Standby
-��������:�������״̬
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void MMA865x_Standby(void)
-{
- //Put the sensor into Standby Mode by clearing
- // the Active bit of the System Control 1 Register
- IIC_RegWrite(CTRL_REG1, 0); //(IIC_RegRead(CTRL_REG1) & ~ ACTIVE_MASK)
-}
-/*******************************************************************************
-������: MMA865x_Active
-��������:��������ģʽ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void MMA865x_Active(void)
-{
- // Put the sensor into Active Mode by setting the
- // Active bit of the System Control 1 Register
- IIC_RegWrite(CTRL_REG1,ACTIVE_MASK );//(IIC_RegRead(CTRL_REG1) | ACTIVE_MASK)
-}
-/*******************************************************************************
-������: IIC_RegRead
-��������:������Reg����������
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void StartUp_Accelerated(void)
-{
- //------�������״̬-----------------------//
- MMA865x_Standby();
- //---- ���ò�����Χ4g----------------------//
- IIC_RegWrite(XYZ_DATA_CFG_REG,FULL_SCALE_8G );//(IIC_RegRead(XYZ_DATA_CFG_REG) & ~FS_MASK)
- //--- ������������ʱ��������100HZ------------------------------------//
- IIC_RegWrite(CTRL_REG1, DataRateValue); //IIC_RegRead(CTRL_REG1)|
- //----���ò�������ģʽ------------------------------------------------------//
- IIC_RegWrite(CTRL_REG2, 0);//(IIC_RegRead(CTRL_REG2) & ~MODS_MASK)
- //---------��������ģʽ------------------------------------//
- MMA865x_Active();
-}
-
-/*******************************************************************************
-������: Read_ZYXDr
-��������:��ȡXYZ����
-�������:NULL
-���ز���:x,y,z�ķ���
-*******************************************************************************/
-int Read_ZYXDr(void)
-{
- u8 reg_flag;
- u8 ptr,i;
- u8 value[6];
-
- memset((u8*)&gX_value,0,6);
- //Poll the ZYXDR status bit and wait for it to set
- if(IIC_RegRead(STATUS_REG)) {
- reg_flag = gMmatxdata ;
- if((reg_flag & ZYXDR_BIT) !=0) {
- //Read 12/10-bit XYZ results using a 6 byte IIC access
- ptr=X_MSB_REG;
- for(i=0; i<6; i++) {
- if(IIC_RegRead(ptr++)==0)break;
- value[i]=gMmatxdata ;
- //Copy and save each result as a 16-bit left-justified value
- gX_value.Byte.hi = value[0];
- gX_value.Byte.lo = value[1];
- gY_value.Byte.hi = value[2];
- gY_value.Byte.lo = value[3];
- gZ_value.Byte.hi = value[4];
- gZ_value.Byte.lo = value[5];
- return 1;
- }
- } else
- return 0;
- }
- return 0;
-}
-/*******************************************************************************
-������: Cheak_XYData
-��������:���x��y�ķ���仯
-�������:ǰһxy��������xy����Ա�
-���ز���:�Ƿ��ƶ�
-*******************************************************************************/
-u16 Cheak_XYData(u16 x0,u16 y0,u16 x1,u16 y1)
-{
- u16 active = 0;
- gShift = 0;
-
- if((x1 > (x0 + 16)) || (x1 < (x0 - 16))) active = 1;
- if((y1 > (y0 + 16)) || (y1 < (y0 - 16))) active = 1;
-
- if((x1 > (x0 + 32)) || (x1 < (x0 - 32))) gShift = 1;
- if((y1 > (y0 + 32)) || (y1 < (y0 - 32))) gShift = 1;
-
- return active;
-}
-/*******************************************************************************
-������: Update_X
-��������:��������
-�������:����x
-���ز���:NULL
-*******************************************************************************/
-u16 Update_X(void)
-{
- u16 value,x;
-
- value = ((gX_value.Byte.hi<<8) | (gX_value.Byte.lo & 0xf0 ))>>4;
- if(gX_value.Byte.hi>0x7f) x = (~value+1) & 0xfff;
- else x = value & 0xfff;
-
- return x;
-}
-/*******************************************************************************
-������: Update_Y
-��������:��������
-�������:NULL
-���ز���:����y
-*******************************************************************************/
-u16 Update_Y(void)
-{
- u16 value,y;
-
- value = ((gY_value.Byte.hi<<8) | (gY_value.Byte.lo & 0xf0 ))>>4;
- if(gY_value.Byte.hi>0x7f) y = (~value+1) & 0xfff;
- else y = value & 0xfff;
-
- return y;
-}
-/*******************************************************************************
-������: Update_z
-��������:��������
-�������:NULL
-���ز���:����z
-*******************************************************************************/
-u16 Update_Z(void)
-{
- u16 value,z;
-
- value = ((gZ_value.Byte.hi<<8) | (gZ_value.Byte.lo & 0xf0 ))>>4;
- if(gZ_value.Byte.hi>0x7f) z = (~value+1) & 0xfff;
- else z = value & 0xfff;
-
- return z;
-}
-/*******************************************************************************
-������: Check_Accelerated
-��������:�����ٶȴ������Ƿ��ƶ�
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Check_Accelerated(void)
-{
- static u16 x0 = 0,y0 = 0;
- u16 x1,y1;
-
- if(Read_ZYXDr()) { /*�����ݣ���������*/
- x1 = Update_X();
- y1 = Update_Y();
- } else x1 = x0;
- y1 = y0;
- gactive = Cheak_XYData(x0,y0,x1,y1);/*����Ƿ��ƶ�*/
-
- x0 = x1;
- y0 = y1;
-}
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/Main.c b/S100App/Src/Main.c deleted file mode 100644 index a7ee03ef..00000000 --- a/S100App/Src/Main.c +++ /dev/null @@ -1,69 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : main.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/07
-History:
-2015/07/07 ͳһ������
-*******************************************************************************/
-#include <string.h>
-#include <stdio.h>
-#include "APP_Version.h"
-#include "Disk.h"
-#include "Bios.h"
-#include "USB_lib.h"
-#include "I2C.h"
-#include "Flash.h"
-#include "MMA8652FC.h"
-#include "UI.h"
-#include "OLed.h"
-#include "CTRL.h"
-#include "HARDWARE.h"
-
-/*******************************************************************************
-������: main
-��������:��ѭ��
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void main(void)
-{
- RCC_Config();
- NVIC_Config(0x4000);
- Init_Timer2();
- Init_Timer3();
- GPIO_Config();
- USB_Port(DISABLE);
- Delay_Ms(200);
- USB_Port(ENABLE);
- USB_Init();
- I2C_Configuration();
-
- Ad_Init();
- if (Get_CtrlStatus() != CONFIG) StartUp_Accelerated();
-
- System_Init();
- Init_Oled();
- Clear_Screen();
- Init_Gtime();
- APP_Init();
-
- Disk_BuffInit();
- Config_Analysis(); // ��������U��
-
- Pid_Init();
- Set_gKey(NO_KEY);
- Start_Watchdog(3000);
-
- while (1) {
- Clear_Watchdog();
- if (Get_CtrlStatus() != CONFIG && LEAVE_WAIT_TIMER == 0) {
- Check_Accelerated();
- LEAVE_WAIT_TIMER = 50;
- }
- OLed_Display(); //��ʾCtrl_status
- Status_Tran(); //���ݵ�ǰ״̬����ϰ��������ʱ��ת��
- }
-}
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/Oled.c b/S100App/Src/Oled.c deleted file mode 100644 index 579dac09..00000000 --- a/S100App/Src/Oled.c +++ /dev/null @@ -1,319 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : Oled.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/07/07
-History:
-2015/07/07 ͳһ������
-*******************************************************************************/
-
-#include <stdio.h>
-#include <string.h>
-#include "APP_Version.h"
-#include "Oled.h"
-#include "Bios.h"
-#include "I2C.h"
-#include "HARDWARE.h"
-#include "DISK.h"
-#include "UI.h"
-
-
-const u8 Mini[] = {/*12*16*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFE,
- 0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFE,0xFE,0xFC,0x78,
- 0x30,0x80,0xC0,0xC0,0x00,0x18,0x9C,0xCE,0xE6,0xF0,0xF8,0xFC,0xFE,0xFE,0xFC,0xF8,
- 0xF0,0xE0,0xC0,0xE0,0xF0,0xF8,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x0F,0x07,0x03,0x01,0x03,0x07,0x0F,0x1F,
- 0x3F,0x7F,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x03,0x07,0x07,0x03,0x19,0x1C,0x0E,
- 0x67,0x73,0x39,0x1C,0x0E,0x07,0x03,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0x7F,0x3F,
- 0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"D:\yinyongqin\��������\LOGOIN.BMP.bmp",0*/
-};
-const u8 Seeed[] = {/*12*16*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x80,0x00,0x00,0xC0,0xF8,0x38,0x04,0x00,
- 0x04,0x38,0xF8,0xC0,0x00,0x00,0x80,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x30,
- 0x10,0x10,0x10,0x10,0x10,0x20,0x00,0x00,0x80,0xC0,0x60,0x30,0x10,0x10,0x10,0x30,
- 0x60,0xC0,0x80,0x00,0x00,0x80,0xC0,0x60,0x30,0x10,0x10,0x10,0x30,0x60,0xC0,0x80,
- 0x00,0x80,0xC0,0x60,0x30,0x10,0x10,0x10,0x30,0x60,0xC0,0x80,0x00,0x00,0x80,0xC0,
- 0x40,0x20,0x20,0x20,0x20,0x40,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x1C,0x38,0x23,0x6F,0x5C,0x00,0x00,
- 0x00,0x5C,0x6F,0x23,0x38,0x1C,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x23,
- 0x42,0x42,0x42,0x42,0x42,0x22,0x1C,0x00,0x07,0x1E,0x32,0x22,0x42,0x42,0x42,0x42,
- 0x62,0x32,0x03,0x00,0x00,0x07,0x1E,0x32,0x22,0x42,0x42,0x42,0x42,0x22,0x32,0x03,
- 0x00,0x07,0x1E,0x32,0x22,0x42,0x42,0x42,0x42,0x62,0x32,0x03,0x00,0x00,0x0F,0x18,
- 0x10,0x20,0x20,0x20,0x20,0x10,0x18,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"D:\yinyongqin\��������\LOGOIN.ddMP.bmp",0*/
-};
-#ifdef SSD1316
-u8 gOled_param[50] = { 0x80,0xAE,0x80,0x00,0x80,0x10,0x80,0x40,0x80,0xB0,0x80,
- 0x81,0x80,0xFF,0x80,0xA0,0x80,0xA6,0x80,0xA8,0x80,0x1F,
- 0x80,0xC8,0x80,0xD3,0x80,0x00,0x80,0xD5,0x80,0x80,0x80,
- 0xD9,0x80,0x22,0x80,0xDA,0x80,0x12,0x80,0xDB,0x80,0x40,
- 0x80,0x8D,0x80,0x14,0x80,0xAF,
- };
-#else
-u8 gOled_param[46] = { 0x80,0xAE,0x80,0xD5,0x80,0x52,0x80,0xA8,0x80,0x0f,0x80,
- 0xC0,0x80,0xD3,0x80,0x00,0x80,0x40,0x80,0xA0,0x80,0x8D,
- 0x80,0x14,0x80,0xDA,0x80,0x02,0x80,0x81,0x80,0x33,0x80,
- 0xD9,0x80,0xF1,0x80,0xDB,0x80,0x30,0x80,0xA4,0x80,0XA6,
- 0x80,0xAF
- };
-#endif
-/*******************************************************************************
-������: Sc_Pt
-��������:��Ļ�����ı���Ļ�Աȶ�
-�������:Co��Ļ�ԱȶȲ���
-���ز���:NULL
-*******************************************************************************/
-void Sc_Pt(u8 Co) //��Ļ����
-{
- u8 pt[4] = {0x80,0x81,0x80,Co};
-
- I2C_PageWrite(pt,4,DEVICEADDR_OLED);
-}
-/*******************************************************************************
-������: Oled_DisplayOn
-��������:��OLED��ʾ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Oled_DisplayOn(void)
-{
- u8 data[6] = {0x80,0X8D,0x80,0X14,0x80,0XAF};
-
- I2C_PageWrite(data,6,DEVICEADDR_OLED);
-}
-/*******************************************************************************
-������: Oled_DisplayOff
-��������:�ر�OLED��ʾ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Oled_DisplayOff(void)
-{
- u8 data[6] = {0x80,0X8D,0x80,0X10,0x80,0XAE};
-
- I2C_PageWrite(data,6,DEVICEADDR_OLED);
-}
-
-/*******************************************************************************
-������: Data_Command
-��������:����ʾ�Ŀ����Լ���ʾ�����봫��OLED
-�������:wide ��,ptr ��ָ��
-���ز���:��һ��ָ��
-*******************************************************************************/
-u8* Data_Command(u8 wide,u8* ptr)
-{
- int i;
- u8 tx_data[128];
-
- tx_data[0] = 0x40;
- wide += 1;
- for(i = 1; i < wide; i++) tx_data[i] = *ptr++;
- I2C_PageWrite(tx_data,wide,DEVICEADDR_OLED);
- return ptr;
-}
-/*******************************************************************************
-������: Set_ShowPos
-��������:Ҫ��ʾ���ݵ�λ��
-�������:x:������,y:������(0,8,16,24)
-���ز���:NULL
-*******************************************************************************/
-void Set_ShowPos(u8 x,u8 y)
-{
- u8 pos_param[8] = { 0x80,0xB0,0x80,0x21,0x80,0x20,0x80,0x7F };
-
- pos_param[5] = x + 32;
- pos_param[1] += y;
-
- I2C_PageWrite(pos_param,8,DEVICEADDR_OLED);
-}
-
-/*******************************************************************************
-������: Oled_DrawArea
-��������:��ʾһ������
-�������: x0:��ʼ������
- y0:��ʼ������(0,8,16,24)
- wide:��ʾ���ݿ���
- high:��ʾ���ݸ߶�
- ptr:��ʾ�����ݿ�ָ��
-���ز���:��һ��ָ��
-*******************************************************************************/
-u8* Oled_DrawArea(u8 x0,u8 y0,u8 wide, u8 high,u8* ptr)
-{
- u8 m,n,y;
-
- n = y0 + high;
- if(y0 % 8 == 0) m = y0 / 8;
- else m = y0 / 8 + 1;
-
- if(n % 8 == 0) y = n / 8;
- else y = n / 8 + 1;
-
- for(; m < y; m++) {
- Set_ShowPos(x0,m);
- ptr = Data_Command(wide,ptr);
- }
- return ptr;
-}
-
-/*******************************************************************************
-������: Clean_Char
-��������:�������wideλ��Ϊk������Ļ
-�������: ����wide�������
-���ز���:NULL
-*******************************************************************************/
-void Clean_Char(int k,u8 wide)
-{
- int i;
- u8 tx_data[128];
-
- memset(&tx_data[0],0,wide);
- for(i = 0; i < 2; i++) {
- Oled_DrawArea(k,i * 8,wide,8,tx_data);
- }
-}
-/*******************************************************************************
-������: GPIO_Init_OLED
-��������:��ʼ��LED�˿�
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void GPIO_Init_OLED(void)
-{
- GPIO_InitTypeDef GPIO_InitStructure;
-
- GPIO_InitStructure.GPIO_Pin = OLED_RST_PIN;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-}
-/*******************************************************************************
-������: Init_Oled
-��������:��ʼ��LED����
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Init_Oled(void)
-{
- u8 param_len;
-
- OLED_RST();
- Delay_Ms(2);
- OLED_ACT();
- Delay_Ms(2);
-
-#ifdef SSD1316
- param_len = 50;
-#else
- param_len = 46;
-#endif
-
- I2C_PageWrite((u8 *)gOled_param,param_len,DEVICEADDR_OLED);
-}
-
-/*******************************************************************************
-������: Clear_Screen
-��������:����
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Clear_Screen(void)
-{
- u8 tx_data[128];
- u8 i,wd;
-
-#ifdef SSD1316
- wd = 32;
-#else
- wd = 16;
-#endif
-
- memset(&tx_data[0],0,128);
- for(i = 0; i < wd / 8; i++) {
- Oled_DrawArea(0,i * 8,128,8,tx_data);
- }
-}
-/*******************************************************************************
-������: Display_BG
-��������:��������ʾ��ΪLOGOIN.BMP��ͼƬ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Display_BG(void)
-{
- u8 i,j,k,m,n,p,ch,Palette = 1;
- u8* bmpfile;
- u16 filelen;
- u16* Root_addr = 0;
- u8 *ptr = 0;
- u8 g_au8TxData[128];
-
- if(bmpfile = SearchFile("LOGOIN BMP",&filelen,Root_addr)) {
- if(bmpfile[0] == 'B' && bmpfile[1] == 'M' ) {
- if((bmpfile[0x36] == 0xFF) && (bmpfile[0x37] == 0xFF) && (bmpfile[0x38] == 0xFF)) {
- Palette = 0;
- }
- memset(&g_au8TxData[1],0,127);
- p = 0x1;
- for(i = 15; i >= 8; i--) {
- m = 0;
- for(j = 0; j < 12; j++) {
- ch = bmpfile[0x3E + i * 12 + j];
- n = 0x80;
- for(k = 0; k < 8; k++) {
- if(Palette) {
- if(!(ch & n)) g_au8TxData[m + 1] |= p;
- } else {
- if((ch & n)) g_au8TxData[m + 1] |= p;
- }
- m++;
- n >>= 1;
- }
- }
- p <<= 1;
- }
- Oled_DrawArea(0,0,96,8,g_au8TxData);
- Clear_Watchdog();
-
- memset(&g_au8TxData[1],0,127);
- p = 0x1;
- for(i = 0; i < 8; i++) {
- m = 0;
- for(j = 0; j < 12; j++) {
- ch = bmpfile[0x3E + (7 - i) * 12 + j];
- n = 0x80;
- for(k = 0; k < 8; k++) {
- if(Palette) {
- if(!(ch & n)) g_au8TxData[m + 1] |= p;
- } else {
- if((ch & n)) g_au8TxData[m + 1] |= p;
- }
- m++;
- n >>= 1;
- }
- }
- p <<= 1;
- }
- Oled_DrawArea(0,8,96,8,g_au8TxData);
- Delay_Ms(1000);
- Clear_Watchdog();
- return;
- }
- } else {
-#ifdef MFTSEEED
- ptr = (u8*)Seeed;
-#else
- ptr = (u8*)Mini;
-#endif
- Oled_DrawArea(0,0,96,16,ptr);
- Delay_Ms(1000);
- Clear_Watchdog();
- }
-}
-
-/******************************** END OF FILE *********************************/
-
diff --git a/S100App/Src/STM32F103_Startup.s b/S100App/Src/STM32F103_Startup.s deleted file mode 100644 index 23b2230b..00000000 --- a/S100App/Src/STM32F103_Startup.s +++ /dev/null @@ -1,641 +0,0 @@ -;******************** (C) COPYRIGHT 2012 STMicroelectronics ********************
-;* File Name : startup_stm32f10x_hd.s
-;* Author : MCD Application Team
-;* Version : V3.6.1
-;* Date : 09-March-2012
-;* Description : STM32F10x High Density Devices vector table for EWARM
-;* toolchain.
-;* This module performs:
-;* - Set the initial SP
-;* - Configure the clock system and the external SRAM
-;* mounted on STM3210E-EVAL board to be used as data
-;* memory (optional, to be enabled by user)
-;* - Set the initial PC == __iar_program_start,
-;* - Set the vector table entries with the exceptions ISR address,
-;* After Reset the Cortex-M3 processor is in Thread mode,
-;* priority is Privileged, and the Stack is set to Main.
-;********************************************************************************
-;*
-;* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-;* You may not use this file except in compliance with the License.
-;* You may obtain a copy of the License at:
-;*
-;* http://www.st.com/software_license_agreement_liberty_v2
-;*
-;* Unless required by applicable law or agreed to in writing, software
-;* distributed under the License is distributed on an "AS IS" BASIS,
-;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;* See the License for the specific language governing permissions and
-;* limitations under the License.
-;*
-;*******************************************************************************
-;
-;
-; The modules in this file are included in the libraries, and may be replaced
-; by any user-defined modules that define the PUBLIC symbol _program_start or
-; a user defined start symbol.
-; To override the cstartup defined in the library, simply add your modified
-; version to the workbench project.
-;
-; The vector table is normally located at address 0.
-; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
-; The name "__vector_table" has special meaning for C-SPY:
-; it is where the SP start value is found, and the NVIC vector
-; table register (VTOR) is initialized to this address if != 0.
-;
-; Cortex-M version
-;
-#define APP_MODE // #define DFU_MODE //
-
- MODULE ?cstartup
-
- ;; Forward declaration of sections.
- SECTION CSTACK:DATA:NOROOT(3)
-
- SECTION .intvec:CODE:NOROOT(2)
-
- EXTERN __iar_program_start
- EXTERN SystemInit
- PUBLIC __vector_table
-
- DATA
-
-__vector_table
- DCD sfe(CSTACK)
- DCD Reset_Handler ; Reset Handler
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD MemManage_Handler ; MPU Fault Handler
- DCD BusFault_Handler ; Bus Fault Handler
- DCD UsageFault_Handler ; Usage Fault Handler
-
- DCD 0 ; Reserved
- DCD 0;//__Dev_SN ; 0x08000020
- DCD 0;//__Ident ; 0x08000024
- DCD 0;//__Chk_SYS ; 0x08000028
-
- DCD SVC_Handler ; SVCall Handler
- DCD DebugMon_Handler ; Debug Monitor Handler
- DCD 0;//__Info ; 0x08000034
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
- ; External Interrupts
- DCD WWDG_IRQHandler ; Window Watchdog
- DCD PVD_IRQHandler ; PVD through EXTI Line detect
- DCD TAMPER_IRQHandler ; Tamper
- DCD RTC_IRQHandler ; RTC
- DCD FLASH_IRQHandler ; Flash
- DCD RCC_IRQHandler ; RCC
- DCD EXTI0_IRQHandler ; EXTI Line 0
- DCD EXTI1_IRQHandler ; EXTI Line 1
- DCD EXTI2_IRQHandler ; EXTI Line 2
- DCD EXTI3_IRQHandler ; EXTI Line 3
- DCD EXTI4_IRQHandler ; EXTI Line 4
- DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
- DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
- DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
- DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
- DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
- DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
- DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
- DCD ADC1_2_IRQHandler ; ADC1 & ADC2
- DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
- DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
- DCD CAN1_RX1_IRQHandler ; CAN1 RX1
- DCD CAN1_SCE_IRQHandler ; CAN1 SCE
- DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
- DCD TIM1_BRK_IRQHandler ; TIM1 Break
- DCD TIM1_UP_IRQHandler ; TIM1 Update
- DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
- DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
- DCD TIM2_IRQHandler ; TIM2
- DCD TIM3_IRQHandler ; TIM3
- DCD TIM4_IRQHandler ; TIM4
- DCD I2C1_EV_IRQHandler ; I2C1 Event
- DCD I2C1_ER_IRQHandler ; I2C1 Error
- DCD I2C2_EV_IRQHandler ; I2C2 Event
- DCD I2C2_ER_IRQHandler ; I2C2 Error
- DCD SPI1_IRQHandler ; SPI1
- DCD SPI2_IRQHandler ; SPI2
- DCD USART1_IRQHandler ; USART1
- DCD USART2_IRQHandler ; USART2
- DCD USART3_IRQHandler ; USART3
- DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
- DCD RTCAlarm_IRQHandler ; RTC Alarm through EXTI Line
- DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
- DCD TIM8_BRK_IRQHandler ; TIM8 Break
- DCD TIM8_UP_IRQHandler ; TIM8 Update
- DCD TIM8_TRG_COM_IRQHandler ; TIM8 Trigger and Commutation
- DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
-#ifdef APP_MODE
- DCD ADC3_IRQHandler ; ADC3
- DCD FSMC_IRQHandler ; FSMC
- DCD SDIO_IRQHandler ; SDIO
- DCD TIM5_IRQHandler ; TIM5
- DCD SPI3_IRQHandler ; SPI3
- DCD UART4_IRQHandler ; UART4
- DCD UART5_IRQHandler ; UART5
- DCD TIM6_IRQHandler ; TIM6
- DCD TIM7_IRQHandler ; TIM7
- DCD DMA2_Channel1_IRQHandler ; DMA2 Channel1
- DCD DMA2_Channel2_IRQHandler ; DMA2 Channel2
- DCD DMA2_Channel3_IRQHandler ; DMA2 Channel3
- DCD DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
-#endif
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/*
-#ifdef DFU_MODE
- EXPORT LIC_REC
-LIC_REC DCD 0xFFFFFFFF
-
- THUMB
-
-#ifdef DFU_MODE
-; 0x08000100 ��ʼ��� DFU ����ָ��
-;------------------------------
- IMPORT Dev_SN
- EXPORT __Dev_SN
-__Dev_SN
- B.W Dev_SN
-;------------------------------
- IMPORT Ident
- EXPORT __Ident
-__Ident
- B.W Ident
-;------------------------------
- IMPORT Lic_ok
- EXPORT __Chk_SYS
-__Chk_SYS
- B.W Lic_ok
-;------------------------------
- IMPORT Lic_Gen
- EXPORT __Lic_Gen
-__Lic_Gen
- B.W Lic_Gen
-;------------------------------
- IMPORT LCD_Init
- EXPORT __LCD_Init
-__LCD_Init
- B.W LCD_Init
-;------------------------------
- IMPORT Direction
- EXPORT __Direction
-__Direction
- B.W Direction
-;------------------------------
- IMPORT SetBlock
- EXPORT __SetBlock
-__SetBlock
- B.W SetBlock
-;------------------------------
- IMPORT SetPosi
- EXPORT __SetPosi
-__SetPosi
- B.W SetPosi
-;------------------------------
- IMPORT SetPixel
- EXPORT __SetPixel
-__SetPixel
- B.W SetPixel
-;------------------------------
- IMPORT SendPixels
- EXPORT __SendPixels
-__SendPixels
- B.W SendPixels
-;------------------------------
- IMPORT ReadPixel
- EXPORT __ReadPixel
-__ReadPixel
- B.W ReadPixel
-;------------------------------
- IMPORT Get_TAB_8x14
- EXPORT __Font_8x14
-__Font_8x14
- B.W Get_TAB_8x14
-;------------------------------
- IMPORT DispLogo
- EXPORT __DispLogo
-__DispLogo
- B.W DispLogo
-;------------------------------
- IMPORT DispStr
- EXPORT __DispStr
-__DispStr
- B.W DispStr
-;------------------------------
- IMPORT Info
- EXPORT __Info
-__Info
- B.W Info
-;------------------------------
- IMPORT Ctrl
- EXPORT __Ctrl
-__Ctrl
- B.W Ctrl
-;------------------------------
- IMPORT FLASH_Prog
- EXPORT __FLASH_Prog
-__FLASH_Prog
- B.W FLASH_Prog
-;------------------------------
- IMPORT FLASH_Erase
- EXPORT __FLASH_Erase
-__FLASH_Erase
- B.W FLASH_Erase
-;------------------------------
- IMPORT ExtFlashSecWr
- EXPORT __ExtFlashSecWr
-__ExtFlashSecWr
- B.W ExtFlashSecWr
-;------------------------------
- IMPORT ExtFlashDataRd
- EXPORT __ExtFlashDataRd
-__ExtFlashDataRd
- B.W ExtFlashDataRd
-;------------------------------
- IMPORT I2C_Write
- EXPORT __I2C_Write
-__I2C_Write
-; B.W I2C_Write
-;------------------------------
- IMPORT I2C_Read
- EXPORT __I2C_Read
-__I2C_Read
-; B.W I2C_Read
-;------------------------------
- NOP.W
-
- EXPORT LCD_WR_Ctrl
-LCD_WR_Ctrl
- MOVW R1, #0x1400
- MOVT R1, #0x4001
- MOV R2, #0x1000
- STR R2, [R1, #0x14]
- MOVS R3, #0x60000000
- STRH R0, [R3]
- STR R2, [R1, #0x10]
- BX LR
-
-#endif
-*/
-;;
-;; Default interrupt handlers.
-;;
- PUBWEAK Reset_Handler
- SECTION .text:CODE:REORDER(2)
-Reset_Handler
- LDR R0, =SystemInit
- BLX R0
- LDR R0, =__iar_program_start
- BX R0
-
- PUBWEAK NMI_Handler
- SECTION .text:CODE:REORDER(1)
-NMI_Handler
- B NMI_Handler
-
- PUBWEAK HardFault_Handler
- SECTION .text:CODE:REORDER(1)
-HardFault_Handler
- B HardFault_Handler
-
- PUBWEAK MemManage_Handler
- SECTION .text:CODE:REORDER(1)
-MemManage_Handler
- B MemManage_Handler
-
- PUBWEAK BusFault_Handler
- SECTION .text:CODE:REORDER(1)
-BusFault_Handler
- B BusFault_Handler
-
- PUBWEAK UsageFault_Handler
- SECTION .text:CODE:REORDER(1)
-UsageFault_Handler
- B UsageFault_Handler
-
- PUBWEAK SVC_Handler
- SECTION .text:CODE:REORDER(1)
-SVC_Handler
- B SVC_Handler
-
- PUBWEAK DebugMon_Handler
- SECTION .text:CODE:REORDER(1)
-DebugMon_Handler
- B DebugMon_Handler
-
- PUBWEAK PendSV_Handler
- SECTION .text:CODE:REORDER(1)
-PendSV_Handler
- B PendSV_Handler
-
- PUBWEAK SysTick_Handler
- SECTION .text:CODE:REORDER(1)
-SysTick_Handler
- B SysTick_Handler
-
- PUBWEAK WWDG_IRQHandler
- SECTION .text:CODE:REORDER(1)
-WWDG_IRQHandler
- B WWDG_IRQHandler
-
- PUBWEAK PVD_IRQHandler
- SECTION .text:CODE:REORDER(1)
-PVD_IRQHandler
- B PVD_IRQHandler
-
- PUBWEAK TAMPER_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TAMPER_IRQHandler
- B TAMPER_IRQHandler
-
- PUBWEAK RTC_IRQHandler
- SECTION .text:CODE:REORDER(1)
-RTC_IRQHandler
- B RTC_IRQHandler
-
- PUBWEAK FLASH_IRQHandler
- SECTION .text:CODE:REORDER(1)
-FLASH_IRQHandler
- B FLASH_IRQHandler
-
- PUBWEAK RCC_IRQHandler
- SECTION .text:CODE:REORDER(1)
-RCC_IRQHandler
- B RCC_IRQHandler
-
- PUBWEAK EXTI0_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI0_IRQHandler
- B EXTI0_IRQHandler
-
- PUBWEAK EXTI1_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI1_IRQHandler
- B EXTI1_IRQHandler
-
- PUBWEAK EXTI2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI2_IRQHandler
- B EXTI2_IRQHandler
-
- PUBWEAK EXTI3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI3_IRQHandler
- B EXTI3_IRQHandler
-
- PUBWEAK EXTI4_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI4_IRQHandler
- B EXTI4_IRQHandler
-
- PUBWEAK DMA1_Channel1_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel1_IRQHandler
- B DMA1_Channel1_IRQHandler
-
- PUBWEAK DMA1_Channel2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel2_IRQHandler
- B DMA1_Channel2_IRQHandler
-
- PUBWEAK DMA1_Channel3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel3_IRQHandler
- B DMA1_Channel3_IRQHandler
-
- PUBWEAK DMA1_Channel4_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel4_IRQHandler
- B DMA1_Channel4_IRQHandler
-
- PUBWEAK DMA1_Channel5_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel5_IRQHandler
- B DMA1_Channel5_IRQHandler
-
- PUBWEAK DMA1_Channel6_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel6_IRQHandler
- B DMA1_Channel6_IRQHandler
-
- PUBWEAK DMA1_Channel7_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA1_Channel7_IRQHandler
- B DMA1_Channel7_IRQHandler
-
- PUBWEAK ADC1_2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-ADC1_2_IRQHandler
- B ADC1_2_IRQHandler
-
- PUBWEAK USB_HP_CAN1_TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USB_HP_CAN1_TX_IRQHandler
- B USB_HP_CAN1_TX_IRQHandler
-
- PUBWEAK USB_LP_CAN1_RX0_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USB_LP_CAN1_RX0_IRQHandler
- B USB_LP_CAN1_RX0_IRQHandler
-
- PUBWEAK CAN1_RX1_IRQHandler
- SECTION .text:CODE:REORDER(1)
-CAN1_RX1_IRQHandler
- B CAN1_RX1_IRQHandler
-
- PUBWEAK CAN1_SCE_IRQHandler
- SECTION .text:CODE:REORDER(1)
-CAN1_SCE_IRQHandler
- B CAN1_SCE_IRQHandler
-
- PUBWEAK EXTI9_5_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI9_5_IRQHandler
- B EXTI9_5_IRQHandler
-
- PUBWEAK TIM1_BRK_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM1_BRK_IRQHandler
- B TIM1_BRK_IRQHandler
-
- PUBWEAK TIM1_UP_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM1_UP_IRQHandler
- B TIM1_UP_IRQHandler
-
- PUBWEAK TIM1_TRG_COM_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM1_TRG_COM_IRQHandler
- B TIM1_TRG_COM_IRQHandler
-
- PUBWEAK TIM1_CC_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM1_CC_IRQHandler
- B TIM1_CC_IRQHandler
-
- PUBWEAK TIM2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM2_IRQHandler
- B TIM2_IRQHandler
-
- PUBWEAK TIM3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM3_IRQHandler
- B TIM3_IRQHandler
-
- PUBWEAK TIM4_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM4_IRQHandler
- B TIM4_IRQHandler
-
- PUBWEAK I2C1_EV_IRQHandler
- SECTION .text:CODE:REORDER(1)
-I2C1_EV_IRQHandler
- B I2C1_EV_IRQHandler
-
- PUBWEAK I2C1_ER_IRQHandler
- SECTION .text:CODE:REORDER(1)
-I2C1_ER_IRQHandler
- B I2C1_ER_IRQHandler
-
- PUBWEAK I2C2_EV_IRQHandler
- SECTION .text:CODE:REORDER(1)
-I2C2_EV_IRQHandler
- B I2C2_EV_IRQHandler
-
- PUBWEAK I2C2_ER_IRQHandler
- SECTION .text:CODE:REORDER(1)
-I2C2_ER_IRQHandler
- B I2C2_ER_IRQHandler
-
- PUBWEAK SPI1_IRQHandler
- SECTION .text:CODE:REORDER(1)
-SPI1_IRQHandler
- B SPI1_IRQHandler
-
- PUBWEAK SPI2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-SPI2_IRQHandler
- B SPI2_IRQHandler
-
- PUBWEAK USART1_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USART1_IRQHandler
- B USART1_IRQHandler
-
- PUBWEAK USART2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USART2_IRQHandler
- B USART2_IRQHandler
-
- PUBWEAK USART3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USART3_IRQHandler
- B USART3_IRQHandler
-
- PUBWEAK EXTI15_10_IRQHandler
- SECTION .text:CODE:REORDER(1)
-EXTI15_10_IRQHandler
- B EXTI15_10_IRQHandler
-
- PUBWEAK RTCAlarm_IRQHandler
- SECTION .text:CODE:REORDER(1)
-RTCAlarm_IRQHandler
- B RTCAlarm_IRQHandler
-
- PUBWEAK USBWakeUp_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USBWakeUp_IRQHandler
- B USBWakeUp_IRQHandler
-
- PUBWEAK TIM8_BRK_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM8_BRK_IRQHandler
- B TIM8_BRK_IRQHandler
-
- PUBWEAK TIM8_UP_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM8_UP_IRQHandler
- B TIM8_UP_IRQHandler
-
- PUBWEAK TIM8_TRG_COM_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM8_TRG_COM_IRQHandler
- B TIM8_TRG_COM_IRQHandler
-
- PUBWEAK TIM8_CC_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM8_CC_IRQHandler
- B TIM8_CC_IRQHandler
-
- PUBWEAK ADC3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-ADC3_IRQHandler
- B ADC3_IRQHandler
-
- PUBWEAK FSMC_IRQHandler
- SECTION .text:CODE:REORDER(1)
-FSMC_IRQHandler
- B FSMC_IRQHandler
-
- PUBWEAK SDIO_IRQHandler
- SECTION .text:CODE:REORDER(1)
-SDIO_IRQHandler
- B SDIO_IRQHandler
-
- PUBWEAK TIM5_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM5_IRQHandler
- B TIM5_IRQHandler
-
- PUBWEAK SPI3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-SPI3_IRQHandler
- B SPI3_IRQHandler
-
- PUBWEAK UART4_IRQHandler
- SECTION .text:CODE:REORDER(1)
-UART4_IRQHandler
- B UART4_IRQHandler
-
- PUBWEAK UART5_IRQHandler
- SECTION .text:CODE:REORDER(1)
-UART5_IRQHandler
- B UART5_IRQHandler
-
- PUBWEAK TIM6_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM6_IRQHandler
- B TIM6_IRQHandler
-
- PUBWEAK TIM7_IRQHandler
- SECTION .text:CODE:REORDER(1)
-TIM7_IRQHandler
- B TIM7_IRQHandler
-
- PUBWEAK DMA2_Channel1_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA2_Channel1_IRQHandler
- B DMA2_Channel1_IRQHandler
-
- PUBWEAK DMA2_Channel2_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA2_Channel2_IRQHandler
- B DMA2_Channel2_IRQHandler
-
- PUBWEAK DMA2_Channel3_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA2_Channel3_IRQHandler
- B DMA2_Channel3_IRQHandler
-
- PUBWEAK DMA2_Channel4_5_IRQHandler
- SECTION .text:CODE:REORDER(1)
-DMA2_Channel4_5_IRQHandler
- B DMA2_Channel4_5_IRQHandler
-
-
- END
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/S100App/Src/STM32F103_System.c b/S100App/Src/STM32F103_System.c deleted file mode 100644 index a5aff6be..00000000 --- a/S100App/Src/STM32F103_System.c +++ /dev/null @@ -1,157 +0,0 @@ -/**
- ******************************************************************************
- * @file system_stm32f10x.c
- * @author MCD Application Team
- * @version V3.6.1
- * @date 09-March-2012
- * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File.
- *
- * 1. This file provides two functions and one global variable to be called from
- * user application:
- * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
- * factors, AHB/APBx prescalers and Flash settings).
- * This function is called at startup just after reset and
- * before branch to main program. This call is made inside
- * the "startup_stm32f10x_xx.s" file.
- *
- * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
- * by the user application to setup the SysTick
- * timer or configure other parameters.
- *
- * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
- * be called whenever the core clock is changed
- * during program execution.
- *
- * 2. After each device reset the HSI (8 MHz) is used as system clock source.
- * Then SystemInit() function is called, in "startup_stm32f10x_xx.s" file, to
- * configure the system clock before to branch to main program.
- *
- * 3. If the system clock source selected by user fails to startup, the SystemInit()
- * function will do nothing and HSI still used as system clock source. User can
- * add some code to deal with this issue inside the SetSysClock() function.
- *
- * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depedning on
- * the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file.
- * When HSE is used as system clock source, directly or through PLL, and you
- * are using different crystal you have to adapt the HSE value to your own
- * configuration.
- *
- ******************************************************************************
- * @attention
- *
- * <h2><center>© COPYRIGHT 2012 STMicroelectronics</center></h2>
- *
- * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.st.com/software_license_agreement_liberty_v2
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-
-#include "stm32f10x.h"
-
-
-#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field.
- This value must be a multiple of 0x200. */
-
-static void SetSysClockTo72MHz(void);
-
-/*******************************************************************************
-* Clock Definitions
-*******************************************************************************/
-u32 SystemCoreClock = 72000000; // 72MHz System Clock Frequency
-u8 AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
-
-void SystemInit (void)
-{
- RCC->CR |= 0x00000001;// Set HSION bit
- RCC->CFGR &= 0xF8FF0000;// Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits
- RCC->CR &= 0xFEF6FFFF;// Reset HSEON, CSSON and PLLON bits
- RCC->CR &= 0xFFFBFFFF;// Reset HSEBYP bit
- RCC->CFGR &= 0xFF80FFFF;// Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits
- RCC->CIR = 0x009F0000;// Disable all interrupts and clear pending bits
-
- /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
- /* Configure the Flash Latency cycles and enable prefetch buffer */
- SetSysClockTo72MHz();
- SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
-}
-
-void SystemCoreClockUpdate (void)
-{
- u32 tmp = 0, pllmull = 0, pllsource = 0;
-
- /* Get SYSCLK source -------------------------------------------------------*/
- tmp = RCC->CFGR & RCC_CFGR_SWS;
- switch(tmp){
- case 0x00: // HSI used as system clock
- SystemCoreClock = 8000000; // HSI_VALUE;
- break;
- case 0x04: // HSE used as system clock
- SystemCoreClock = 8000000; // HSE_VALUE;
- break;
- case 0x08: // PLL used as system clock
- // Get PLL clock source and multiplication factor
- pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
- pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
- pllmull = ( pllmull >> 18) + 2;
- // HSI oscillator clock divided by 2 selected as PLL clock entry
- if (pllsource == 0x00) SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
- break;
- default:
- SystemCoreClock = HSI_VALUE;
- break;
- }
-
- // Compute HCLK clock frequency
- tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];// Get HCLK prescaler
- SystemCoreClock >>= tmp; // HCLK clock frequency
-}
-
-static void SetSysClockTo72MHz(void)
-{
- u32 StartUpCounter = 0, HSEStatus = 0;
-
- // SYSCLK, HCLK, PCLK2 and PCLK1 configuration
- RCC->CR |= ((u32)RCC_CR_HSEON);/* Enable HSE */
- do { // Wait till HSE is ready and if Time out is reached exit
- HSEStatus = RCC->CR & RCC_CR_HSERDY;
- StartUpCounter++;
- } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
-
- if ((RCC->CR & RCC_CR_HSERDY) != RESET) HSEStatus = 0x01;
- else HSEStatus = 0x00;
-
- if (HSEStatus == 0x01){
- FLASH->ACR |= FLASH_ACR_PRFTBE;/* Enable Prefetch Buffer */
- /* Flash 2 wait state */
- FLASH->ACR &= (u32)((u32)~FLASH_ACR_LATENCY);
- FLASH->ACR |= (u32)FLASH_ACR_LATENCY_2;
- RCC->CFGR |= RCC_CFGR_HPRE_DIV1;/* HCLK = SYSCLK */
- RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;/* PCLK2 = HCLK */
- RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;/* PCLK1 = HCLK */
- /* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
- RCC->CFGR &= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL);
- RCC->CFGR |= (u32)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
- RCC->CR |= RCC_CR_PLLON;/* Enable PLL */
- while((RCC->CR & RCC_CR_PLLRDY) == 0){}/* Wait till PLL is ready */
- /* Select PLL as system clock source */
- RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
- RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
-
-
- while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
- {}/* Wait till PLL is used as system clock source */
- }
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/S100App/Src/UI.c b/S100App/Src/UI.c deleted file mode 100644 index 2c573865..00000000 --- a/S100App/Src/UI.c +++ /dev/null @@ -1,1110 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. **********************
-File Name : UI.c
-Version : S100 APP Ver 2.11
-Description:
-Author : Celery
-Data: 2015/08/03
-History:
-2015/07/07 ͳһ������
-2015/08/03 �Ż��ƶ��ж�
-*******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include "APP_Version.h"
-#include "UI.h"
-#include "CTRL.h"
-#include "WordLib.h"
-#include "Bios.h"
-#include "OLed.h"
-#include "HARDWARE.h"
-#include "disk.h"
-#include "MMA8652FC.h"
-/******************************************************************************/
-u8 gTemp_array[16*16 + 16];
-u8 gTemperatureshowflag = 0; /* 0 �����϶�,1�ǻ��϶�*/
-u8 gUp_flag = 0,gDown_flag = 0,gLevel_flag = 0,gTempset_showctrl = 0;
-u16 gTemp_array_u16[98 + 16];
-u16 gSet_table[2] = {4000,1000}; /*�¶�ѡ��*/
-u32 gCont = 0; /*gCont ��������״̬ת�����ˢ����ʶ*/
-
-static u8 Ver_s[] = { /*12*16*/
- 0x04,0x0C,0x74,0x80,0x00,0x00,0x00,0x80,0x74,0x0C,0x04,0x00,
- 0x00,0x00,0x00,0x03,0x1C,0x60,0x1C,0x03,0x00,0x00,0x00,0x00,/*"V",0*/
- 0x00,0x00,0x80,0x40,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,
- 0x00,0x1F,0x22,0x42,0x42,0x42,0x42,0x22,0x13,0x00,0x00,0x00,/*"e",1*/
- 0x00,0x40,0x40,0xC0,0x00,0x80,0x40,0x40,0x40,0xC0,0x00,0x00,
- 0x00,0x40,0x40,0x7F,0x41,0x40,0x40,0x00,0x00,0x00,0x00,0x00,/*"r",2*/
- 0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,/*":",3*/
- 0x00,0x78,0x04,0x04,0x04,0x04,0x04,0x88,0x78,0x00,0x00,0x00,
- 0x00,0x60,0x50,0x48,0x44,0x42,0x41,0x40,0x70,0x00,0x00,0x00,/*"2",4*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",5*/
- 0x00,0xE0,0x18,0x08,0x04,0x04,0x04,0x08,0x18,0xE0,0x00,0x00,
- 0x00,0x0F,0x30,0x20,0x40,0x40,0x40,0x20,0x30,0x0F,0x00,0x00,/*"0",6*/
- 0x00,0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x40,0x7F,0x40,0x40,0x40,0x00,0x00,0x00,/*"1",7*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/
-};
-
-/******************************************************************************/
-
-/*******************************************************************************
-������: Get_UpdataFlag
-��������:��ȡ��Ļˢ�±�־
-�������:NULL
-���ز���:��Ļˢ�±�־
-*******************************************************************************/
-u32 Get_UpdataFlag(void)
-{
- return gCont;
-}
-/*******************************************************************************
-������: Set_UpdataFlag
-��������:������Ļˢ�±�־
-�������:1 ˢ�£�0 ��ˢ��
-���ز���:NULL
-*******************************************************************************/
-void Set_UpdataFlag(u32 cont)
-{
- gCont = cont;
-}
-/*******************************************************************************
-������: Set_TemperatureShowFlag
-��������:�����¶���ʾ��ʽ
-�������:flag ���϶�(0),���϶�(1)��־
-���ز���:NULL
-*******************************************************************************/
-void Set_TemperatureShowFlag(u8 flag)
-{
- gTemperatureshowflag = flag;
-}
-/*******************************************************************************
-������: Get_TemperatureShowFlag
-��������:��ȡ�¶���ʾ��ʽ
-�������:NULL
-���ز���:flag ���϶�(0),���϶�(1)��־
-*******************************************************************************/
-u8 Get_TemperatureShowFlag(void)
-{
- return gTemperatureshowflag;
-}
-/*******************************************************************************
-������: TemperatureShow_Change
-��������:���϶Ȼ��϶��ת��
-�������: flag 0,���϶�ת�����϶�
- flag 1,���϶�ת�����϶�
- tmp Ҫת�����¶�
-���ز���:ת�����ֵ
-*******************************************************************************/
-s16 TemperatureShow_Change(u8 flag ,s16 tmp)
-{
- if(flag == 0) {
- return (320 + tmp*9/5);
- } else {
- return (5*tmp - 1600)/9;
- }
-}
-/*******************************************************************************
-������: APP_Init
-��������:���ݵ�ѹ��ʼ����ʼ״̬
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void APP_Init(void)
-{
- int rev;
-
- HEATING_TIMER = 0;
- UI_TIMER = 0;
-
- rev = Read_Vb(0);
- if(rev == 0) Set_CtrlStatus(ALARM);
- else if(rev >= 4) {
- Set_LongKeyFlag(1);
- Set_CtrlStatus(CONFIG);
- } else {
- Set_CtrlStatus(IDLE);
- G6_TIMER = device_info.idle_time;
- }
-
-}
-
-/*******************************************************************************
-������: Display_Temp
-��������:��ʾ�¶�
-�������:x:��ʾλ�� Temp:�¶�
-���ز���:NULL
-*******************************************************************************/
-void Display_Temp(u8 x,s16 temp)
-{
- char Str[8];
-
- memset(Str,0x0,6);
- sprintf(Str,"%d",temp);
-
- if(gTemperatureshowflag == 0) {
- if(temp > 99) Str[3] = 'C';
- else if(temp > 9 ) {
- Str[2] = 'C';
- Str[3] = ' ';
- } else if(temp < 0) {
- if(temp + 9 >= 0) {
- Str[2] = 'C';
- Str[3] = ' ';
- } else {
- Str[3] = 'C';
- }
- } else {
- Str[1] = 'C';
- Str[2] = ' ';
- Str[3] = ' ';
- }
- } else {
- if(temp > 99) Str[3] = 'E';
- else if(temp > 9 ) {
- Str[2] = 'E';
- Str[3] = ' ';
- } else if(temp < 0) {
- if(temp + 9 >= 0) {
- Str[2] = 'E';
- Str[3] = ' ';
- } else {
- Str[3] = 'E';
- }
- } else {
- Str[1] = 'E';
- Str[2] = ' ';
- Str[3] = ' ';
- }
- }
- Display_Str(x,Str);
- TEMPSHOW_TIMER = 20;//200ms
-}
-/*******************************************************************************
-������: Show_Notice
-��������:��ʾ������ʾ��Ϣ
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Show_Notice(void)
-{
- int j,k;
- static u8* ptr0;
- static u8 posi = 0,i = 0;
-
- if(i == 0) { //��1 ��
- ptr0 = Oled_DrawArea(0,0,96,16,(u8*)Maplib);
- } else if(i == 1) {//��2 ��
- ptr0 = Oled_DrawArea(0,0,96,16,ptr0);
- } else if(i == 2) {//��3 ��
- ptr0 = Oled_DrawArea(0,0,96,16,(u8*)Maplib);
- } else if(i == 3) {//��4 ��
- for(j = 0 ; j < 6; j++) {
- k = 84;
- while(k >= posi) {
- ptr0 = (u8*)Maplib1 + j*28;
- Clean_Char(k+7,14);
- ptr0 = Oled_DrawArea(k,0,14,16,ptr0);
- k-=7;
- Delay_Ms(10);
- }
- posi += 14;
- }
- posi = 0;
- }
- i++;
- if(i == 4) i = 0;
-}
-/*******************************************************************************
-������: Show_Ver
-��������:��ʾ�汾
-�������:ver �汾��flag (0 :������ʾ )(1������)
-���ز���:NULL
-*******************************************************************************/
-void Show_Ver(u8 ver[],u8 flag)
-{
- u8 *ptr;
- int k,i;
- u8 temp0,temp1,temp2;
-
- if(ver[2] >= 0x30 && ver[2] < 0x3a) temp1 = ver[2] - 0x30;
- if(ver[3] >= 0x30 && ver[3] < 0x3a) temp2 = ver[3] - 0x30;
- if(ver[0] >= 0x30 && ver[0] < 0x3a) temp0 = ver[0] - 0x30;
-
- for(i = 0; i < 24; i++) {
- Ver_s[4 * 24 + i] = Number12[temp0 * 24 + i];
- Ver_s[6 * 24 + i] = Number12[temp1 * 24 + i];
- Ver_s[7 * 24 + i] = Number12[temp2 * 24 + i];
- }
-
- for(k = 0; k < 16; k++) {
- if(flag == 0) {
- Show_ReverseChar((u8*)Ver_s,8,12,2);
- ptr = (u8*)gTemp_array;
- } else {
- ptr = (u8*)Ver_s;
- }
- for(i = 0; i < 8; i++) {
- ptr = Oled_DrawArea(i*12,0,12,16,ptr);
- }
- }
- if(flag == 0) {
- Delay_Ms(1000);
- Clear_Screen();
- Clear_Watchdog();
- }
-}
-
-/*******************************************************************************
-������: Show_Config
-��������:��ʾCONFIG
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Show_Config(void)
-{
- u8* ptr;
- u8 j;
-
- ptr = (u8*)Config;
- for(j = 0; j < 6; j++) {
- ptr = Oled_DrawArea(j*16,0,16,16,ptr);
- }
-}
-
-/*******************************************************************************
-������: Show_TempDown
-��������:��ʾ�¶��½�: ʵ���¶�>>>Ŀ���¶�
-�������:temp ʵ���¶�,dst_temp Ŀ���¶�
-���ز���:NULL
-*******************************************************************************/
-void Show_TempDown(s16 temp,s16 dst_temp)
-{
- static u8 guide_ui = 0;
- char str[8];
-
- memset(str,0x0,6);
- sprintf(str,"%d",temp);
- if(gTemperatureshowflag == 0) {
- if(temp > 99) str[3] = 'C';
- else {
- str[2] = 'C';
- str[3] = ' ';
- }
- } else {
- if(temp > 99) str[3] = 'E';
- else {
- str[2] = 'E';
- str[3] = ' ';
- }
- }
-
- Display_Str10(1,str);
-
- Oled_DrawArea(41,0,16,16,(u8*)(Guide + (guide_ui++) * 32));
-
- if(guide_ui == 3) guide_ui = 0;
-
- memset(str,0x0,6);
- sprintf(str,"%d",dst_temp);
- if(gTemperatureshowflag == 0) {
- if(temp > 99) str[3] = 'C';
- else {
- str[2] = 'C';
- str[3] = ' ';
- }
- } else {
- if(temp > 99) str[3] = 'E';
- else {
- str[2] = 'E';
- str[3] = ' ';
- }
- }
-
- Display_Str10(56,str);
-}
-/*******************************************************************************
-������: Show_Cal
-��������:��ʾУ���
-�������:flag = 1 У�ɹ� flag = 2 Уʧ��
-���ز���:NULL
-*******************************************************************************/
-void Show_Cal(u8 flag)
-{
- u8 i;
- u8* ptr;
-
- if(flag == 1) ptr = (u8*)Cal_Done;
- else if(flag == 2) ptr = (u8*)Cal_UnDone;
-
- ptr = Oled_DrawArea(0,0,16,16,(u8*)ptr);
-
- for(i = 1; i < 6; i++)
- ptr = Oled_DrawArea(16 * i,0,16,16,(u8*)ptr);
- Delay_Ms(1000);
- Clear_Watchdog();
-}
-/*******************************************************************************
-������: Show_Warning
-��������:��ʾ�������
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Show_Warning(void)
-{
- u8 i;
- u8* ptr;
- static u8 flag = 0;
-
- switch(Get_AlarmType()) {
- case HIGH_TEMP:
- ptr = (u8*)Warning;
- break;
- case SEN_ERR:
- ptr = (u8*)SenErr;
- break;
- case HIGH_VOLTAGE:
- ptr = (u8*)HighVt;
- break;
- case LOW_VOLTAGE:
- ptr = (u8*)LowVot;
- break;
- }
-
- Oled_DrawArea(0,0,16,16,(u8*)Warning + 20 * 7);
- if(flag == 0) {
- for(i = 2; i < 9; i++) Oled_DrawArea(10 * i,0,10,16,(u8*)ptr + (i - 2) * 20);
- flag = 1;
- } else {
- Clean_Char(16,80);
- flag = 0;
- }
-}
-
-/*****************************************************************
-������: Show_Triangle
-��������:��ʾ����ģʽ�а�����������Ƿ���ĸ�����̬
-�������: empty_trgl: 0,1,2 ���Ӵ�,��Ӵ�,�ҼӴ�
- fill_trgl: 0,1,2 ��ʵ��,��ʵ��,��ʵ��
-���ز���:NULL
-*******************************************************************/
-void Show_Triangle(u8 empty_trgl,u8 fill_trgl)
-{
- int j;
- u8* ptr;
-
- ptr = (u8*)Triangle;
-
- if((empty_trgl == 0)&&(fill_trgl == 0)) {
- for(j = 0; j < 2; j++) {
- if(j == 0) ptr = Oled_DrawArea(0,0,16,16,(u8*)ptr);
- else if(j == 1) ptr = Oled_DrawArea(5*16,0,16,16,(u8*)ptr);
- }
- } else if((empty_trgl != 0)&&(fill_trgl == 0)) {
- if(empty_trgl == 1) {
- ptr += 32;
- Oled_DrawArea(5*16,0,16,16,(u8*)ptr);
- ptr += 32;
- Oled_DrawArea(0,0,16,16,(u8*)ptr);
- } else if (empty_trgl == 2) {
- Oled_DrawArea(0,0,16,16,(u8*)ptr);
- ptr += 32*3;
- Oled_DrawArea(5*16,0,16,16,(u8*)ptr);
- }
- } else if((empty_trgl == 0)&&(fill_trgl != 0)) {
- if(fill_trgl == 1) {
- ptr += 32;
- Oled_DrawArea(5*16,0,16,16,(u8*)ptr);
- ptr += 32*3;
- Oled_DrawArea(0,0,16,16,(u8*)ptr);
- } else if (fill_trgl == 2) {
- Oled_DrawArea(0,0,16,16,(u8*)ptr);
- ptr += 32*5;
- Oled_DrawArea(5*16,0,16,16,(u8*)ptr);
- }
- }
-}
-/*******************************************************************************
-������: Shift_Char
-��������:�ַ����������ƶ���ָ��λ��
-�������:ptr �ƶ����ַ� pos �ƶ�����ָ��λ��
-���ز���:NULL
-*******************************************************************************/
-void Shift_Char(u8* ptr,u8 pos)
-{
- int k;
- u8* ptr0;
-
- k = 80;
- pos = pos * 16;//λ��* �ַ�= �ַ�����λ��
- while(k >= pos) {
- ptr0 = (u8*)ptr;
- Clean_Char(k + 16,16);
- ptr0 = Oled_DrawArea(k,0,16,16,(u8*)ptr0);
- k-=16;
- Delay_Ms(25);
- }
-}
-
-/*******************************************************************************
-������: Show_Set
-��������:��ʾ���ý���,���ҵ����ƶ�����
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Show_Set(void)
-{
- u8 m ,k;
- s16 num_temp;
-
- if(Get_TemperatureShowFlag() == 1) {
- num_temp = TemperatureShow_Change(0,device_info.t_work);
- } else {
- num_temp = device_info.t_work;
- }
-
- Shift_Char((u8*)Triangle + 0*32,0);
- m = num_temp/1000; //��
- Shift_Char((u8*)wordlib + m*32,1);
- k = (num_temp - m * 1000)/100;//ʮ
- Shift_Char((u8*)wordlib + k*32,2);
- m = (num_temp - m * 1000 - k * 100)/10;
- Shift_Char((u8*)wordlib + m*32,3);
- Shift_Char((u8*)wordlib + 13*32,4);
- Shift_Char((u8*)Triangle + 1*32,5);
-}
-/*******************************************************************************
-������: Show_OrderChar
-��������:����̬��ʾ�ַ�
-�������: ptr:�ֽڿ�num:����width:����
-���ز���:NULL
-*******************************************************************************/
-void Show_OrderChar(u8* ptr,u8 num,u8 width)
-{
- static u8 i = 1,j = 0,k = 0,m = 10;
- //i��Դ���鿪ʼλ
- //j��Ŀ�����鿪ʼλ
- //m�������ij���
-
- if(gLevel_flag == 0) { //ǰһ״̬���Ǻ���
- i = 1;
- j = 0;
- m = 8;
- gUp_flag = 0;
- gDown_flag = 0;
- gLevel_flag = 1;
- }
-
- if(i == 0) {
- for(k = 0; k <= m ; k++ ) {
- gTemp_array[k] = *(ptr + 52 + j + k - 1);
- gTemp_array[k + width] = *(ptr + 52 + width + k + j - 1);
- }
- m++;
- j--;
- if(m == 11) {
- m--;
- j = 0;
- i = 1;
- return ;
- }
- }
-
- if(j == 0) {
- for(k = 1; k < m ; k++ ) {
- gTemp_array[k + i] = *(ptr + 52 + j + k - 1);
- gTemp_array[k + i + width] = *(ptr + 52 + width + k + j - 1);
- }
- m--;
- i++;
- if(m == 0) {
- m++;
- j = 9;
- i = 0;
- }
- }
-}
-
-/*******************************************************************************
-������: Reverse_Bin8
-��������:��λ����8λ������ 10101010 ��Ϊ01010101
-�������:���������
-���ز���:����������
-*******************************************************************************/
-u8 Reverse_Bin8(u8 data)
-{
- u8 i, cache, result = 0;
-
- for (i = 0; i < 8; i++) {
- cache = data & (1 << i);
- if (i < 4) {
- cache <<= 7 - 2 * i;
- } else {
- cache >>= 2 * i - 7;
- }
- result += cache;
- }
- return result;
-}
-/*******************************************************************************
-������: Show_ReverseChar
-��������:����̬��ʾ�ַ�
-�������: ptr:�ֽڿ� num:����
- width:���� direction :���� (0 up, 1 down)
-���ز���:NULL
-*******************************************************************************/
-void Show_ReverseChar(u8* ptr,u8 num,u8 width,u8 direction)
-{
- static u32 j = 0,m = 0,po_j[3] = {0,0,0},po_m[3] = {0,0,16};
- u32 i,k;
-
- if(direction == 0) { //up
- if(gUp_flag == 0) { //ǰһ״̬���Ǽ���
- j = 0;
- m = 0;
- gUp_flag = 1;
- gDown_flag = 0;
- gLevel_flag = 0;
- } else {
- j = po_j[0];
- m = po_m[0];
- }
- } else if(direction == 1) {
- if(gDown_flag == 0) { //ǰһ״̬���ǽ���
- j = 0;
- m = 0;
- gUp_flag = 0;
- gDown_flag = 1;
- gLevel_flag = 0;
- } else {
- j = po_j[1];
- m = po_m[1];
- }
- } else {
- j = po_j[2];
- m = po_m[2];
- }
- for(i = 0; i < width * 2 * num; i++) gTemp_array[i] = Reverse_Bin8(*(ptr + i)); //����8λ
-
- for(k = 0; k < width * 2 * num; k += width * 2)
- for(i = 0; i < width ; i++) {
- gTemp_array_u16[i + k] = ((gTemp_array[i + k] & 0x00FF) << 8) | gTemp_array[i + k + width] ;//�ϰ벿�°벿���u16 ������λ
- if(direction == 1) {
- if(j == 0) gTemp_array_u16[i + k] <<= m;//����գ�������ʾ
- else gTemp_array_u16[i + k] >>= j;//����գ�������ʾ
- } else { //��
- if(m == 0) gTemp_array_u16[i + k] <<= j;//����գ�������ʾ
- else gTemp_array_u16[i + k] >>= m;//����գ�������ʾ
- }
- gTemp_array[i + k] = (gTemp_array_u16[i + k] & 0xFF00) >> 8;
- gTemp_array[i + k + width] = gTemp_array_u16[i + k] & 0x00FF;
- }
-
- for(i = 0; i < width * 2 * num; i++) gTemp_array[i] = Reverse_Bin8(gTemp_array[i]); //���������
-
- if(m == 0 && j == 16) { //ȫ��ʾ������ʾ'ͷ��'
- j = 0;
- m = 16;
- }
- if(m == 0) j++;
- else m--;
-
- if(direction == 0) { //up
- po_j[0] = j;
- po_m[0] = m;
- } else if(direction == 1) {
- po_j[1] = j;
- po_m[1] = m;
- } else {
- po_j[2] = j;
- po_m[2] = m;
- }
-}
-
-/*******************************************************************************
-Show_TempReverse ����̬��ʾ�¶��ַ�
-word_num: ����
-word_width: ����
-direction : ���� (0 up, 1 down)
-*******************************************************************************/
-u8 Show_TempReverse(u8 num,u8 width,u8 direction)
-{
- static int i,j = 0,m = 16,k;
- u8 g , s ,b;
- u8* ptr;
- s16 num_temp;
-
- if(Get_TemperatureShowFlag() == 1) {
- num_temp = TemperatureShow_Change(0,device_info.t_work);
- } else {
- num_temp = device_info.t_work;
- }
-
- num_temp = num_temp/10;
- b = num_temp/100;
- s = (num_temp - b * 100)/10;
- g = (num_temp - b * 100 - s * 10);
-
- if(gTempset_showctrl == 1) {
- j = 1;
- m = 0;
- gTempset_showctrl = 0;
- } else if(gTempset_showctrl == 2) {
- j = 0;
- m = 16;
- gTempset_showctrl = 0;
- }
- for(i = 0; i < width * 2; i++) {
- gTemp_array[0*32 + i] = Reverse_Bin8(*(wordlib + b*32 + i)); //����8λ
- gTemp_array[1*32 + i] = Reverse_Bin8(*(wordlib + s*32 + i)); //����8λ
- gTemp_array[2*32 + i] = Reverse_Bin8(*(wordlib + g*32 + i)); //����8λ
- if(Get_TemperatureShowFlag() == 1) {
- gTemp_array[3*32 + i] = Reverse_Bin8(*(wordlib + 15*32 + i)); //����8λ
- } else {
- gTemp_array[3*32 + i] = Reverse_Bin8(*(wordlib + 13*32 + i)); //����8λ
- }
- }
- //��K �ij�ʼֵ�ܸı俪ʼ�������ַ�λ�ø�λ����ʮλ���ǰ�λ
- for(k = (3 - num) * width * 2; k < width * 2 * 3; k += width * 2)
- for(i = 0; i < width ; i++) {
- gTemp_array_u16[i + k] = ((gTemp_array[i + k] & 0x00FF) << 8) | gTemp_array[i + k + width] ;//�ϰ벿�°벿���u16 ������λ
- if(direction == 0) { //��
- if(m == 0) gTemp_array_u16[i + k] <<= j;//����գ�������ʾ
- else gTemp_array_u16[i + k] >>= m;//����գ�������ʾ
- } else {
- if(j == 0) gTemp_array_u16[i + k] <<= m;//����գ�������ʾ
- else gTemp_array_u16[i + k] >>= j;//����գ�������ʾ
- }
- gTemp_array[i + k] = (gTemp_array_u16[i + k] & 0xFF00) >> 8;
- gTemp_array[i + k + width] = gTemp_array_u16[i + k] & 0x00FF;
- }
- for(i = 0; i < width * 2; i++) {
- gTemp_array[0*32 + i] = Reverse_Bin8(gTemp_array[0*32 + i]);
- gTemp_array[1*32 + i] = Reverse_Bin8(gTemp_array[1*32 + i]);
- gTemp_array[2*32 + i] = Reverse_Bin8(gTemp_array[2*32 + i]);
- gTemp_array[3*32 + i] = Reverse_Bin8(gTemp_array[3*32 + i]);
- }
-
- ptr = (u8*)gTemp_array;
- for(i = 1; i <= 4; i++) ptr = Oled_DrawArea(16 * i,0,16,16,(u8*)ptr);
- if((m == 0 && j == 0)||(m == 0 && j == 16)) return 0 ;
- if(m == 0) j++;
- else m--;
- return 1;
-}
-
-/*******************************************************************************
-������: Show_HeatingIcon
-��������:��̬ѡ����ȵ�״̬��ʶ
-�������: ht_flag ���±�ʾ active �ƶ���ʶ
-���ز���:NULL
-*******************************************************************************/
-void Show_HeatingIcon(u32 ht_flag,u16 active)
-{
- u8* ptr;
-
- memset(gTemp_array,0,20);
- if(ht_flag == 0) Show_ReverseChar((u8*)TempIcon,1,10,0); //(5,ptr,16);//����//
- else if(ht_flag == 1) Show_ReverseChar((u8*)TempIcon + 32,1,10,1);//(5,ptr+32,16);//����//
- else if(ht_flag == 2) Show_OrderChar((u8*)TempIcon,1,10); //(5,ptr+64,16);//����//
-
- ptr = (u8*)gTemp_array;
- Oled_DrawArea(86,0,10,16,(u8*)ptr);
-
- if(Get_CtrlStatus() == WAIT) Oled_DrawArea(80,0,6,16,(u8*)IhIcon + 12);
- else {
- if(active == 0) Oled_DrawArea(80,0,6,16,(u8*)TempIcon + 20);
- else Oled_DrawArea(80,0,6,16,(u8*)IhIcon);
- }
-}
-/*******************************************************************************
-������: Display_Str
-��������:��ʾ16*16�ַ���
-�������:x: λ�� str :��ʾ�ַ���
-���ز���:NULL
-*******************************************************************************/
-void Display_Str(u8 x, char* str)
-{
- u8* ptr;
- u8 temp;
-
- if((x < 1)||(x > 8)) x = 0;
- else x--;
- while(*str != 0) {
- temp = *str++;
- if(temp == ' ') temp = 10;
- else if(temp == '-')temp = 12;
- else {
- if((temp >= 0x30) && (temp < 0x3a)) temp = temp - 0x30; /* 0 --9 */
- else {
- if((temp >= 0x41) && (temp <= 0x46)) temp = temp - 0x41 + 11;/*ABD*/
- else return ;
- }
- }
- ptr = (u8*)wordlib;
- ptr += temp*32;
- Oled_DrawArea(x * 16,0,16,16,(u8*)ptr);
- x++;
- }
-}
-/*******************************************************************************
-������: Display_Str10
-��������:��ʾ����Ϊ10���ַ���
-�������:x: λ�� str :��ʾ�ַ���
-���ز���:NULL
-*******************************************************************************/
-void Display_Str10(u8 x, char* str)
-{
- u8* ptr;
- u8 temp;
- u8 position = 0;
-
- while(*str != 0) {
- temp = *str++;
- if(temp == 'C') temp = 11;
- else if(temp == 'E') temp = 12;
- else {
- if((temp >= 0x30) && (temp < 0x3a)) temp = temp - 0x30; /* 0 --9 */
- else {
- temp = 10;
- }
- }
- ptr = (u8*)Number10;
- ptr += temp*20;
- Oled_DrawArea(x + position*10,0,10,16,(u8*)ptr);
- position++;
- }
-}
-
-/*******************************************************************************
-������: Print_Integer
-��������:�������ݴ�ӡ����
-�������:data ����,posi �
-���ز���:NULL
-*******************************************************************************/
-void Print_Integer(s32 data,u8 posi)
-{
- char str[8];
-
- Clear_Screen();
- sprintf(str,"%d",data);
- Display_Str(posi,str);
-}
-/*******************************************************************************
-������: Calculation_TWork
-��������:���������¶ȵ�ֵ(�Ӽ����ò�����Ľ��)
-�������:Flag (0+ or 1-)
-���ز���:�¶ȼӼ����ò�����Ľ��
-*******************************************************************************/
-u32 Calculation_TWork(u8 Flag)
-{
- s16 num_temp;
-
- if(Get_TemperatureShowFlag() == 1) {
- num_temp = TemperatureShow_Change(0,device_info.t_work);
- if(Flag == 0) num_temp += device_info.t_step;
- else num_temp -= device_info.t_step;
- return TemperatureShow_Change(1,num_temp);
- } else {
- if(Flag == 0) return (device_info.t_work + device_info.t_step);
- else return (device_info.t_work - device_info.t_step);
- }
-}
-/*******************************************************************************
-������: Roll_Num
-��������:�����У���Ҫ�������¶�ֵ��λ��
-�������:step ����,Flag (0+ or 1-)
-���ز���:��Ҫ�����ĸ���
-*******************************************************************************/
-u8 Roll_Num(u16 step,u8 flag)
-{
- u16 b1,b2,g1,g2;
- s16 num_temp;
-
- if(Get_TemperatureShowFlag() == 1) {
- num_temp = TemperatureShow_Change(0,device_info.t_work);
- } else {
- num_temp = device_info.t_work;
- }
- b2 = (num_temp)/1000;
- g2 = (num_temp)/100;
-
- if(flag == 0) {
- b1 = (num_temp + step)/1000;
- g1 = (num_temp + step)/100;
- if(b1 != b2) return 3;
- else if(g1 != g2) return 2;
- else return 1;
- } else {
- b1 = (num_temp - step)/1000;
- g1 = (num_temp - step)/100;
-
- if(b1 != b2) return 3;
- else if(g1 != g2) return 2;
- else return 1;
- }
-}
-/*******************************************************************************
-������: Temp_SetProc
-��������:�����¶�
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void Temp_SetProc(void)
-{
- u8 theRoll_num = 3;
- static u16 cont = 0;
-
- if(device_info.t_step == 10) cont = 1;
-
- if(EFFECTIVE_KEY_TIMER > 0) {
- if(gCont != 0) {
- //���ý�������������
- gCont = 0;
- Set_LongKeyFlag(0);
- Clear_Screen();
-
- Show_Set();
- }
- switch(Get_gKey()) {
- case KEY_V1:
- //����,���·�,��ǰ����ʾ��ʧ
- //����ֵ����
- if(device_info.t_work > gSet_table[1]) {
- gTempset_showctrl = 1;
- theRoll_num = Roll_Num(device_info.t_step,1);
- while(Show_TempReverse(theRoll_num,16,1));
- device_info.t_work = Calculation_TWork(1);
- if(device_info.t_work < gSet_table[1]) device_info.t_work = gSet_table[1];
- gTempset_showctrl = 2;
- while(Show_TempReverse(theRoll_num,16,1));
- Show_Triangle(1,0);
- }
- if(device_info.t_work == gSet_table[1]) Show_Triangle(0,1);
- break;
- case KEY_V2:
- //����,���Ϸ�,��ǰ����ʾ��ʧ
- //����ֵ����
- if(device_info.t_work < gSet_table[0]) {
- gTempset_showctrl = 1;
- theRoll_num = Roll_Num(device_info.t_step,0);
- while(Show_TempReverse(theRoll_num,16,0));
- device_info.t_work = Calculation_TWork(0);
- if(device_info.t_work > gSet_table[0]) device_info.t_work = gSet_table[0];
- gTempset_showctrl = 2;
- while(Show_TempReverse(theRoll_num,16,0));
- Show_Triangle(2,0);
- }
-
- if(device_info.t_work == gSet_table[0]) Show_Triangle(0,2);
- break;
- default:
- break;
- }
- if(Get_gKey() > NO_KEY) {
- if(cont > 0 && EFFECTIVE_KEY_TIMER > 260) {
- device_info.t_step = 10 + cont * 50;
- cont++;
- }
- EFFECTIVE_KEY_TIMER = 300;
- Set_gKey(NO_KEY);
- }
- if(cont > 0 && EFFECTIVE_KEY_TIMER <= 260) {
- device_info.t_step = 10;
- cont = 1;
- }
- }
-}
-
-/*******************************************************************************
-������: OLed_Display
-��������:��Ļ��ʾ�����ƺ���
-�������:NULL
-���ز���:NULL
-*******************************************************************************/
-void OLed_Display(void)
-{
- u16 ht_flag;
- s16 temp_val,dst_temp;
- static u8 td_flag = 0,ver_flag = 0,config_show = 0;
- static u16 td_cnt = 0;
- static u16 bk = 0x33,id_cnt = 0;
-
- switch (Get_CtrlStatus()) {
- case IDLE:
- if(gCont == 1) {
- gCont = 0;
- Clear_Screen();
- }
-
- if(ver_flag == 0) {
- Display_BG();
- Show_Ver(device_info.ver,0);
- ver_flag = 1;
- } else if(UI_TIMER == 0 && G6_TIMER != 0) {
- Show_Notice();
- UI_TIMER = 50;
- }
- if(G6_TIMER == 0) { //����
- id_cnt++;
- if(id_cnt == 50)Sc_Pt(bk--);
- if(bk == 0) Oled_DisplayOff();
- }
- if((Get_MmaShift() == 1) || (Get_gKey() != NO_KEY)) {
- G6_TIMER = device_info.idle_time;
- bk = 0x33;
- Sc_Pt(bk);
- Oled_DisplayOn();
- }
- break;
- case TEMP_CTR:
- if(gCont == 0) {
- gCont = 1;
- Set_LongKeyFlag(1);
- Clear_Screen();
- }
-
- ht_flag = Get_HtFlag();
-
- if(ht_flag != 1) {
- if(td_flag == 1) Clear_Screen();
- td_cnt = 0;
- td_flag = 0;
- }
-
- if(td_cnt == 75 && td_flag == 0) {
- Clear_Screen();
- td_flag = 1;
- }
-
- if(td_flag && UI_TIMER == 0) {
- temp_val = Get_TempVal();
- dst_temp = device_info.t_work;
- if(Get_TemperatureShowFlag() == 1) {
- temp_val = TemperatureShow_Change(0,temp_val);
- dst_temp = TemperatureShow_Change(0,dst_temp);
- }
- Show_TempDown(temp_val,dst_temp);
- UI_TIMER = 50;
- }
- if((TEMPSHOW_TIMER == 0) && (!td_flag)) {
- temp_val = Get_TempVal();
- if((temp_val > device_info.t_work) && (temp_val - device_info.t_work < 18)) temp_val = device_info.t_work;
- else if((temp_val <= device_info.t_work) && (device_info.t_work - temp_val < 18)) temp_val = device_info.t_work;
- if(Get_TemperatureShowFlag() == 1) {
- temp_val = TemperatureShow_Change(0,temp_val);
- }
-
- Display_Temp(1,temp_val/10);
- Show_HeatingIcon(ht_flag,Get_MmaActive());//0����1����2����
- td_cnt++;
- }
- break;
- case TEMP_SET:
- Temp_SetProc(); //����
- break;
- case CONFIG:
- if(gCont == 1) {
- gCont = 0;
- Clear_Screen();
- }
- switch(Get_gKey()) {
- case KEY_CN|KEY_V1:
- config_show = 1;
- break;
- case KEY_CN|KEY_V2:
- config_show = 2;
- break;
- case KEY_CN|KEY_V3:
- config_show = 0;
- break;
- default:
- break;
- }
- if(config_show == 0) {
- Show_Config();
- } else if(config_show == 1) {
- Display_BG();
- } else if(config_show == 2) {
- Show_Ver(device_info.ver,1);
- }
- if(config_show != 3) {
- Set_gKey(NO_KEY);
- config_show = 3;
- }
- break;
- case THERMOMETER:
- if(gCont == 0) {
- gCont = 1;
- Clear_Screen();
- }
- if(gCalib_flag != 0) {
- //��ʾУ���
- Show_Cal(gCalib_flag);
- gCalib_flag = 0;
- Clear_Screen();
- }
- if(UI_TIMER == 0) {
- temp_val = Get_Temp(0);
- if(Get_TemperatureShowFlag() == 1) {
- temp_val = TemperatureShow_Change(0,temp_val);
- }
- Display_Temp(1,temp_val/10);
- Display_Str(6,"F");
- UI_TIMER = 20;
- }
- break;
- case ALARM:
- if(gCont == 0) {
- gCont = 1;
- Clear_Screen();
- }
- if(gCont == 1 && UI_TIMER == 0) {
- Show_Warning();
- UI_TIMER = 50;
- }
- break;
- case WAIT:
- temp_val = Get_TempVal();
- if((temp_val > device_info.t_standby) && (temp_val - device_info.t_standby <= 18)) temp_val = device_info.t_standby;
- else if((temp_val <= device_info.t_standby) && (device_info.t_standby - temp_val <= 18)) temp_val = device_info.t_standby;
-
- ht_flag = Get_HtFlag();
-
- if(ht_flag != 1) {
- if(td_flag == 1) Clear_Screen();
- td_cnt = 0;
- td_flag = 0;
- }
-
- if(td_cnt == 50 && td_flag == 0) {
- Clear_Screen();
- td_flag = 1;
- }
-
- if(td_flag && UI_TIMER == 0) {
- dst_temp = device_info.t_standby;
- if(Get_TemperatureShowFlag() == 1) {
- temp_val = TemperatureShow_Change(0,temp_val);
- dst_temp = TemperatureShow_Change(0,dst_temp);
- }
- Show_TempDown(temp_val,dst_temp);
- UI_TIMER = 50;
- }
- if((TEMPSHOW_TIMER == 0) && (!td_flag)) {
- if(Get_TemperatureShowFlag() == 1) {
- temp_val = TemperatureShow_Change(0,temp_val);
- }
- Display_Temp(1,temp_val/10);
- Show_HeatingIcon(ht_flag,Get_MmaActive());//0����1����2����
- td_cnt++;
- }
- break;
- default:
- break;
- }
-}
-
-/******************************** END OF FILE *********************************/
diff --git a/S100App/Src/USB_bot.c b/S100App/Src/USB_bot.c deleted file mode 100644 index 2ad75058..00000000 --- a/S100App/Src/USB_bot.c +++ /dev/null @@ -1,269 +0,0 @@ -/******************** (C) COPYRIGHT 2015 e-Design Co., Ltd. ********************
- File Name : USB_bot.c
- Version : STM32_USB Disk Ver 3.4 Author : MCD Application Team & bure
-*******************************************************************************/
-#include "USB_scsi.h"
-#include "USB_regs.h"
-#include "USB_mem.h"
-#include "USB_conf.h"
-#include "USB_bot.h"
-#include "USB_prop.h"
-
-u8 Bot_State;
-u8 Bulk_Buff[BULK_MAX_PACKET_SIZE]; // Data_ data buffer
-u16 Data_Len;
-Bulk_Only_CBW CBW;
-Bulk_Only_CSW CSW;
-u32 SCSI_LBA , SCSI_BlkLen;
-
-/*******************************************************************************
- Mass_Storage_In: Mass Storage IN transfer.
-*******************************************************************************/
-void Mass_Storage_In (void)
-{
- switch (Bot_State)
- {
- case BOT_CSW_Send:
- case BOT_ERROR:
- Bot_State = BOT_IDLE;
- SetEPRxStatus(ENDP2, EP_RX_VALID);/* enable the Endpoint to recive the next cmd*/
- break;
- case BOT_DATA_IN:
- switch (CBW.CB[0])
- {
- case SCSI_READ10:
- SCSI_Read10_Cmd(SCSI_LBA , SCSI_BlkLen);
- break;
- }
- break;
- case BOT_DATA_IN_LAST:
- Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
- SetEPRxStatus(ENDP2, EP_RX_VALID);
- break;
-
- default:
- break;
- }
-}
-/*******************************************************************************
- Mass_Storage_Out: Mass Storage OUT transfer.
-*******************************************************************************/
-void Mass_Storage_Out (void)
-{
- u8 CMD;
- CMD = CBW.CB[0];
- Data_Len = GetEPRxCount(ENDP2);
-
- PMAToUserBufferCopy(Bulk_Buff, ENDP2_RXADDR, Data_Len);
-
- switch (Bot_State)
- {
- case BOT_IDLE:
- CBW_Decode();
- break;
- case BOT_DATA_OUT:
- if (CMD == SCSI_WRITE10)
- {
- SCSI_Write10_Cmd(SCSI_LBA , SCSI_BlkLen);
- break;
- }
- Bot_Abort(DIR_OUT);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);
- break;
- default:
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_PHASE_ERROR, SEND_CSW_DISABLE);
- break;
- }
-}
-/*******************************************************************************
- CBW_Decode: Decode the received CBW and call the related SCSI command
-*******************************************************************************/
-void CBW_Decode(void)
-{
- u32 Counter;
-
- for (Counter = 0; Counter < Data_Len; Counter++)
- {
- *((u8 *)&CBW + Counter) = Bulk_Buff[Counter];
- }
- CSW.dTag = CBW.dTag;
- CSW.dDataResidue = CBW.dDataLength;
- if (Data_Len != BOT_CBW_PACKET_LENGTH)
- {
- Bot_Abort(BOTH_DIR);
- // reset the CBW.dSignature to desible the clear feature until receiving a Mass storage reset
- CBW.dSignature = 0;
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, PARAMETER_LIST_LENGTH_ERROR);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- return;
- }
-
- if ((CBW.CB[0] == SCSI_READ10 ) || (CBW.CB[0] == SCSI_WRITE10 ))
- {
- // Calculate Logical Block Address
- SCSI_LBA = (CBW.CB[2] << 24) | (CBW.CB[3] << 16) | (CBW.CB[4] << 8) | CBW.CB[5];
- // Calculate the Number of Blocks to transfer
- SCSI_BlkLen = (CBW.CB[7] << 8) | CBW.CB[8];
- }
-
- if (CBW.dSignature == BOT_CBW_SIGNATURE)
- {
- // Valid CBW
- if ((CBW.bLUN > Max_Lun) || (CBW.bCBLength < 1) || (CBW.bCBLength > 16))
- {
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- }
- else
- {
- switch (CBW.CB[0])
- {
- case SCSI_REQUEST_SENSE:
- SCSI_RequestSense_Cmd ();
- break;
- case SCSI_INQUIRY:
- SCSI_Inquiry_Cmd();
- break;
- case SCSI_START_STOP_UNIT:
- SCSI_Start_Stop_Unit_Cmd();
- break;
- case SCSI_ALLOW_MEDIUM_REMOVAL:
- SCSI_Start_Stop_Unit_Cmd();
- break;
- case SCSI_MODE_SENSE6:
- SCSI_ModeSense6_Cmd ();
- break;
- case SCSI_MODE_SENSE10:
- SCSI_ModeSense10_Cmd ();
- break;
- case SCSI_READ_FORMAT_CAPACITIES:
- SCSI_ReadFormatCapacity_Cmd();
- break;
- case SCSI_READ_CAPACITY10:
- SCSI_ReadCapacity10_Cmd();
- break;
- case SCSI_TEST_UNIT_READY:
- SCSI_TestUnitReady_Cmd();
- break;
- case SCSI_READ10:
- SCSI_Read10_Cmd(SCSI_LBA , SCSI_BlkLen);
- break;
- case SCSI_WRITE10:
- SCSI_Write10_Cmd(SCSI_LBA , SCSI_BlkLen);
- break;
- case SCSI_VERIFY10:
- SCSI_Verify10_Cmd();
- break;
- //Unsupported command
- case SCSI_MODE_SELECT10:
- SCSI_Mode_Select10_Cmd();
- break;
- case SCSI_MODE_SELECT6:
- SCSI_Mode_Select6_Cmd();
- break;
-
- case SCSI_SEND_DIAGNOSTIC:
- SCSI_Send_Diagnostic_Cmd();
- break;
- case SCSI_READ6:
- SCSI_Read6_Cmd();
- break;
- case SCSI_READ12:
- SCSI_Read12_Cmd();
- break;
- case SCSI_READ16:
- SCSI_Read16_Cmd();
- break;
- case SCSI_READ_CAPACITY16:
- SCSI_READ_CAPACITY16_Cmd();
- break;
- case SCSI_WRITE6:
- SCSI_Write6_Cmd();
- break;
- case SCSI_WRITE12:
- SCSI_Write12_Cmd();
- break;
- case SCSI_WRITE16:
- SCSI_Write16_Cmd();
- break;
- case SCSI_VERIFY12:
- SCSI_Verify12_Cmd();
- break;
- case SCSI_VERIFY16:
- SCSI_Verify16_Cmd();
- break;
-
- default:
- {
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- }
- }
- }
- }
- else
- {
- // Invalid CBW
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- }
-}
-/*******************************************************************************
- Transfer_Data_Request: Send the request response to the PC HOST.
- Input : u8* Data_Address : point to the data to transfer.
- u16 Data_Length : the nember of Bytes to transfer.
-*******************************************************************************/
-void Transfer_Data_Request(u8* Data_Pointer, u16 Data_Len)
-{
- UserToPMABufferCopy(Data_Pointer, ENDP1_TXADDR, Data_Len);
- SetEPTxCount(ENDP1, Data_Len);
- SetEPTxStatus(ENDP1, EP_TX_VALID);
- Bot_State = BOT_DATA_IN_LAST;
- CSW.dDataResidue -= Data_Len;
- CSW.bStatus = CSW_CMD_PASSED;
-}
-/*******************************************************************************
- Set_CSW: Set the SCW with the needed fields.
- Input : u8 CSW_Status this filed can be CSW_CMD_PASSED,CSW_CMD_FAILED,
- or CSW_PHASE_ERROR.
-*******************************************************************************/
-void Set_CSW (u8 CSW_Status, u8 Send_Permission)
-{
- CSW.dSignature = BOT_CSW_SIGNATURE;
- CSW.bStatus = CSW_Status;
- UserToPMABufferCopy(((u8 *)& CSW), ENDP1_TXADDR, CSW_DATA_LENGTH);
- SetEPTxCount(ENDP1, CSW_DATA_LENGTH);
- Bot_State = BOT_ERROR;
- if (Send_Permission){
- Bot_State = BOT_CSW_Send;
- SetEPTxStatus(ENDP1, EP_TX_VALID);
- }
-}
-/*******************************************************************************
- Bot_Abort: Stall the needed Endpoint according to the selected direction.
- Input : Endpoint direction IN, OUT or both directions
-*******************************************************************************/
-void Bot_Abort(u8 Direction)
-{
- switch (Direction){
- case DIR_IN :
- SetEPTxStatus(ENDP1, EP_TX_STALL);
- break;
- case DIR_OUT :
- SetEPRxStatus(ENDP2, EP_RX_STALL);
- break;
- case BOTH_DIR :
- SetEPTxStatus(ENDP1, EP_TX_STALL);
- SetEPRxStatus(ENDP2, EP_RX_STALL);
- break;
- default:
- break;
- }
-}
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/USB_desc.c b/S100App/Src/USB_desc.c deleted file mode 100644 index a15602a6..00000000 --- a/S100App/Src/USB_desc.c +++ /dev/null @@ -1,109 +0,0 @@ -/******************** (C) COPYRIGHT 2015 e-Design Co., Ltd. ********************
- File Name : USB_desc.c
- Version : STM32_USB Disk Ver 3.4 Author : MCD Application Team & bure
-*******************************************************************************/
-#include "USB_desc.h"
-
-const u8 MASS_DeviceDescriptor[MASS_SIZ_DEVICE_DESC] ={
- 0x12, /* bLength */
- 0x01, /* bDescriptorType */
- 0x00, /* bcdUSB, version 2.00 */
- 0x02,
- 0x00, /* bDeviceClass : each interface define the device class */
- 0x00, /* bDeviceSubClass */
- 0x00, /* bDeviceProtocol */
- 0x40, /* bMaxPacketSize0 0x40 = 64 */
- 0x83, /* idVendor (0483) */
- 0x04,
- 0x20, /* idProduct */
- 0x57,
- 0x00, /* bcdDevice 2.00*/
- 0x02,
- 1, /* index of string Manufacturer */
- /**/
- 2, /* index of string descriptor of product*/
- /* */
- 3, /* */
- /* */
- /* */
- 0x01 /*bNumConfigurations */
- };
-const u8 MASS_ConfigDescriptor[MASS_SIZ_CONFIG_DESC] ={
- 0x09, /* bLength: Configuation Descriptor size */
- 0x02, /* bDescriptorType: Configuration */
- MASS_SIZ_CONFIG_DESC,
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- /* Configuration value */
- 0x00, /* iConfiguration: */
- /* Index of string descriptor */
- /* describing the configuration */
- 0xC0, /* bmAttributes: */
- /* bus powered */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Descriptor of Mass Storage interface ********************/
- /* 09 */
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- /* Interface descriptor type */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MASS STORAGE Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent*/
- 0x50, /* nInterfaceProtocol */
- 4, /* iInterface: */
- /* 18 */
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- 0x81, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- 0x40, /*Maximum packet size (64 bytes) */
- 0x00,
- 0x00, /*Polling interval in milliseconds */
- /* 25 */
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- 0x02, /*Endpoint address (OUT, address 2) */
- 0x02, /*Bulk endpoint type */
- 0x40, /*Maximum packet size (64 bytes) */
- 0x00,
- 0x00 /*Polling interval in milliseconds*/
- /*32*/
- };
-const u8 MASS_StringLangID[MASS_SIZ_STRING_LANGID] ={
- MASS_SIZ_STRING_LANGID,
- 0x03,
- 0x09,
- 0x04
- }; // LangID = 0x0409: U.S. English //
-const u8 MASS_StringVendor[MASS_SIZ_STRING_VENDOR] ={
- MASS_SIZ_STRING_VENDOR, // Size of manufaturer string //
- 0x03, // bDescriptorType = String descriptor //
- // Manufacturer: "STMicroelectronics" //
- 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0,
- 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0,
- 'c', 0, 's', 0
- };
-const u8 MASS_StringProduct[MASS_SIZ_STRING_PRODUCT] ={
- MASS_SIZ_STRING_PRODUCT,
- 0x03,
- // Product name: "STM32F10x:USB Mass Storage" //
- 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, ' ', 0, 'M', 0, 'a', 0, 's', 0,
- 's', 0, ' ', 0, 'S', 0, 't', 0, 'o', 0, 'r', 0, 'a', 0, 'g', 0, 'e', 0
- };
-u8 MASS_StringSerial[MASS_SIZ_STRING_SERIAL] ={
- MASS_SIZ_STRING_SERIAL,
- 0x03,
- // Serial number//
- 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, '1', 0, '0', 0
- };
-const u8 MASS_StringInterface[MASS_SIZ_STRING_INTERFACE] ={
- MASS_SIZ_STRING_INTERFACE,
- 0x03,
- // Interface 0: "ST Mass" //
- 'S', 0, 'T', 0, ' ', 0, 'M', 0, 'a', 0, 's', 0, 's', 0
- };
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/USB_istr.c b/S100App/Src/USB_istr.c deleted file mode 100644 index 7cebd6d1..00000000 --- a/S100App/Src/USB_istr.c +++ /dev/null @@ -1,138 +0,0 @@ -/******************** (C) COPYRIGHT 2015 e-Design Co., Ltd. ********************
- File Name : USB_istr.c
- Version : STM32 USB Disk Ver 3.4 Author : MCD Application Team & bure
-*******************************************************************************/
-#include "USB_type.h"
-#include "USB_regs.h"
-#include "USB_pwr.h"
-#include "USB_istr.h"
-#include "USB_init.h"
-#include "USB_int.h"
-#include "USB_bot.h"
-
-volatile u16 wIstr; /* ISTR register last read value */
-volatile u8 bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */
-
-void (*pEpInt_IN[7])(void) ={
- EP1_IN_Callback,
- EP2_IN_Callback,
- EP3_IN_Callback,
- EP4_IN_Callback,
- EP5_IN_Callback,
- EP6_IN_Callback,
- EP7_IN_Callback,
- };
-void (*pEpInt_OUT[7])(void) ={
- EP1_OUT_Callback,
- EP2_OUT_Callback,
- EP3_OUT_Callback,
- EP4_OUT_Callback,
- EP5_OUT_Callback,
- EP6_OUT_Callback,
- EP7_OUT_Callback,
- };
-/*******************************************************************************
- USB_Istr: ISTR events interrupt service routine
-*******************************************************************************/
-void USB_Istr(void)
-{
- wIstr = _GetISTR();
-#if (IMR_MSK & ISTR_RESET)
- if (wIstr & ISTR_RESET & wInterrupt_Mask){
-// _SetISTR((u16)CLR_RESET);
- Device_Property.Reset();
- _SetISTR((u16)CLR_RESET);
-//#ifdef RESET_CALLBACK
-// RESET_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_DOVR)
- if (wIstr & ISTR_DOVR & wInterrupt_Mask){
- _SetISTR((u16)CLR_DOVR);
-//#ifdef DOVR_CALLBACK
-// DOVR_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_ERR)
- if (wIstr & ISTR_ERR & wInterrupt_Mask){
- _SetISTR((u16)CLR_ERR);
-//#ifdef ERR_CALLBACK
-// ERR_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_WKUP)
- if (wIstr & ISTR_WKUP & wInterrupt_Mask){
-// _SetISTR((u16)CLR_WKUP);
- Resume(RESUME_EXTERNAL);
- _SetISTR((u16)CLR_WKUP);
-//#ifdef WKUP_CALLBACK
-// WKUP_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_SUSP)
- if (wIstr & ISTR_SUSP & wInterrupt_Mask){ // check if SUSPEND is possible
- if (fSuspendEnabled) Suspend();
- else Resume(RESUME_LATER); // if not possible then resume after xx ms
- _SetISTR((u16)CLR_SUSP); // clear of the ISTR bit must be done after setting of CNTR_FSUSP
-//#ifdef SUSP_CALLBACK
-// SUSP_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_SOF)
- if (wIstr & ISTR_SOF & wInterrupt_Mask){
- _SetISTR((u16)CLR_SOF);
- bIntPackSOF++;
-//#ifdef SOF_CALLBACK
-// SOF_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_ESOF)
- if (wIstr & ISTR_ESOF & wInterrupt_Mask){
-// _SetISTR((u16)CLR_ESOF); // resume handling timing is made with ESOFs
- Resume(RESUME_ESOF); // request without change of the machine state
- _SetISTR((u16)CLR_ESOF); // resume handling timing is made with ESOFs
-//#ifdef ESOF_CALLBACK
-// ESOF_Callback();
-//#endif
- }
-#endif
-//-----------------------------------------------------------------------------
-#if (IMR_MSK & ISTR_CTR)
- if (wIstr & ISTR_CTR & wInterrupt_Mask){
- /* servicing of the endpoint correct transfer interrupt */
- /* clear of the CTR flag into the sub */
- CTR_LP();
-//#ifdef CTR_CALLBACK
-// CTR_Callback();
-//#endif
- }
-#endif
-} /* USB_Istr */
-/*******************************************************************************
- EP1_IN_Callback: EP1 IN Callback Routine
-*******************************************************************************/
-void EP1_IN_Callback(void)
-{
- Mass_Storage_In();
-}
-/*******************************************************************************
- EP2_OUT_Callback: EP2 OUT Callback Routine.
-*******************************************************************************/
-void EP2_OUT_Callback(void)
-{
- Mass_Storage_Out();
-}
-/********************************* END OF FILE ******************************/
-
diff --git a/S100App/Src/USB_prop.c b/S100App/Src/USB_prop.c deleted file mode 100644 index 3eaf5146..00000000 --- a/S100App/Src/USB_prop.c +++ /dev/null @@ -1,262 +0,0 @@ -/******************** (C) COPYRIGHT 2015 e-Design Co., Ltd. ********************
- File Name : USB_prop.c
- Version : STM32 USB Disk Ver 3.4 Author : MCD Application Team & bure
-*******************************************************************************/
-#include "USB_desc.h"
-#include "USB_pwr.h"
-#include "USB_bot.h"
-#include "USB_prop.h"
-#include "USB_lib.h"
-#include "Bios.h"
-#include "APP_Version.h"
-
-u32 Max_Lun = 0;
-
-DEVICE Device_Table ={ EP_NUM, 1 };
-DEVICE_PROP Device_Property ={
- MASS_init,
- MASS_Reset,
- MASS_Status_In,
- MASS_Status_Out,
- MASS_Data_Setup,
- MASS_NoData_Setup,
- MASS_Get_Interface_Setting,
- MASS_GetDeviceDescriptor,
- MASS_GetConfigDescriptor,
- MASS_GetStringDescriptor,
- 0,
- 0x40 // MAX PACKET SIZE
- };
-USER_STANDARD_REQUESTS User_Standard_Requests ={
- Mass_Storage_GetConfiguration,
- Mass_Storage_SetConfiguration,
- Mass_Storage_GetInterface,
- Mass_Storage_SetInterface,
- Mass_Storage_GetStatus,
- Mass_Storage_ClearFeature,
- Mass_Storage_SetEndPointFeature,
- Mass_Storage_SetDeviceFeature,
- Mass_Storage_SetDeviceAddress
- };
-ONE_DESCRIPTOR Device_Descriptor ={
- (u8*)MASS_DeviceDescriptor,
- MASS_SIZ_DEVICE_DESC
- };
-ONE_DESCRIPTOR Config_Descriptor ={
- (u8*)MASS_ConfigDescriptor,
- MASS_SIZ_CONFIG_DESC
- };
-ONE_DESCRIPTOR String_Descriptor[5] ={
- {(u8*)MASS_StringLangID, MASS_SIZ_STRING_LANGID},
- {(u8*)MASS_StringVendor, MASS_SIZ_STRING_VENDOR},
- {(u8*)MASS_StringProduct, MASS_SIZ_STRING_PRODUCT},
- {(u8*)MASS_StringSerial, MASS_SIZ_STRING_SERIAL},
- {(u8*)MASS_StringInterface, MASS_SIZ_STRING_INTERFACE},
- };
-
-/*******************************************************************************
- MASS_init: Mass Storage init routine.
-*******************************************************************************/
-void MASS_init()
-{
- Get_SerialNum(); // Update the serial number string descriptor with the data from the unique ID
- pInformation->Current_Configuration = 0;
- PowerOn(); // Connect the device
- _SetISTR(0); // USB interrupts initialization. clear pending interrupts
- wInterrupt_Mask = IMR_MSK;
- _SetCNTR(wInterrupt_Mask); // set interrupts mask
- bDeviceState = UNCONNECTED;
-}
-/*******************************************************************************
- MASS_Reset: Mass Storage reset routine.
-*******************************************************************************/
-void MASS_Reset()
-{
- Device_Info.Current_Configuration = 0; // Set the device as not configured
- pInformation->Current_Feature = MASS_ConfigDescriptor[7]; // Current Feature initialization
- SetBTABLE(BTABLE_ADDRESS);
- // Initialize Endpoint 0
- SetEPType(ENDP0, EP_CONTROL);
- SetEPTxStatus(ENDP0, EP_TX_NAK);
- SetEPRxAddr(ENDP0, ENDP0_RXADDR);
- SetEPRxCount(ENDP0, Device_Property.MaxPacketSize);
- SetEPTxAddr(ENDP0, ENDP0_TXADDR);
- Clear_Status_Out(ENDP0);
- SetEPRxValid(ENDP0);
- //Initialize Endpoint 1
- SetEPType(ENDP1, EP_BULK);
- SetEPTxAddr(ENDP1, ENDP1_TXADDR);
- SetEPTxStatus(ENDP1, EP_TX_NAK);
- SetEPRxStatus(ENDP1, EP_RX_DIS);
- // Initialize Endpoint 2
- SetEPType(ENDP2, EP_BULK);
- SetEPRxAddr(ENDP2, ENDP2_RXADDR);
- SetEPRxCount(ENDP2, Device_Property.MaxPacketSize);
- SetEPRxStatus(ENDP2, EP_RX_VALID);
- SetEPTxStatus(ENDP2, EP_TX_DIS);
-
- SetEPRxCount(ENDP0, Device_Property.MaxPacketSize);
- SetEPRxValid(ENDP0);
- // Set the device to response on default address
- SetDeviceAddress(0);
-
- bDeviceState = ATTACHED;
-
- CBW.dSignature = BOT_CBW_SIGNATURE;
- Bot_State = BOT_IDLE;
-}
-
-/*******************************************************************************
- Mass_Storage_SetConfiguration: Handle the SetConfiguration request.
-*******************************************************************************/
-void Mass_Storage_SetConfiguration(void)
-{
- if (pInformation->Current_Configuration != 0){
- bDeviceState = CONFIGURED; // Device configured
- ClearDTOG_TX(ENDP1);
- ClearDTOG_RX(ENDP2);
- Bot_State = BOT_IDLE; // set the Bot state machine to the IDLE state
- }
-}
-/*******************************************************************************
- Mass_Storage_ClearFeature: Handle the ClearFeature request.
-*******************************************************************************/
-void Mass_Storage_ClearFeature(void)
-{
- /* when the host send a CBW with invalid signature or invalid length the two
- Endpoints (IN & OUT) shall stall until receiving a Mass Storage Reset */
- if (CBW.dSignature != BOT_CBW_SIGNATURE)
- Bot_Abort(BOTH_DIR);
-}
-/*******************************************************************************
- Mass_Storage_SetConfiguration: Udpade the device state to addressed.
-*******************************************************************************/
-void Mass_Storage_SetDeviceAddress (void)
-{
- bDeviceState = ADDRESSED;
-}
-/*******************************************************************************
- MASS_Status_In: Mass Storage Status IN routine.
-*******************************************************************************/
-void MASS_Status_In(void)
-{
- return;
-}
-/*******************************************************************************
- MASS_Status_Out: Mass Storage Status OUT routine.
-*******************************************************************************/
-void MASS_Status_Out(void)
-{
- return;
-}
-/*******************************************************************************
- MASS_Data_Setup: Handle the data class specific requests.
-*******************************************************************************/
-RESULT MASS_Data_Setup(u8 RequestNo)
-{
- u8* (*CopyRoutine)(u16);
-
- CopyRoutine = NULL;
- if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
- && (RequestNo == GET_MAX_LUN) && (pInformation->USBwValue == 0)
- && (pInformation->USBwIndex == 0) && (pInformation->USBwLength == 0x01))
- {
- CopyRoutine = Get_Max_Lun;
- } else return USB_UNSUPPORT;
- if (CopyRoutine == NULL) return USB_UNSUPPORT;
- pInformation->Ctrl_Info.CopyData = CopyRoutine;
- pInformation->Ctrl_Info.Usb_wOffset = 0;
- (*CopyRoutine)(0);
- return USB_SUCCESS;
-}
-/*******************************************************************************
- MASS_NoData_Setup: Handle the no data class specific requests.
-*******************************************************************************/
-RESULT MASS_NoData_Setup(u8 RequestNo)
-{
- if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
- && (RequestNo == MASS_STORAGE_RESET) && (pInformation->USBwValue == 0)
- && (pInformation->USBwIndex == 0) && (pInformation->USBwLength == 0x00))
- {
- ClearDTOG_TX(ENDP1); // Initialize Endpoint 1
- ClearDTOG_RX(ENDP2); // Initialize Endpoint 2
- CBW.dSignature = BOT_CBW_SIGNATURE; // intialise the CBW signature to enable the clear feature
- Bot_State = BOT_IDLE;
- return USB_SUCCESS;
- }
- return USB_UNSUPPORT;
-}
-/*******************************************************************************
- MASS_Get_Interface_Setting: Test the interface and the alternate setting
- according to the supported one.
-*******************************************************************************/
-RESULT MASS_Get_Interface_Setting(u8 Interface, u8 AlternateSetting)
-{
- if (AlternateSetting > 0) return USB_UNSUPPORT;// in this application we don't have AlternateSetting
- else if (Interface > 0) return USB_UNSUPPORT; // in this application we have only 1 interfaces
- return USB_SUCCESS;
-}
-/*******************************************************************************
- MASS_GetDeviceDescriptor: Get the device descriptor.
-*******************************************************************************/
-u8 *MASS_GetDeviceDescriptor(u16 Length)
-{
- return Standard_GetDescriptorData(Length, &Device_Descriptor );
-}
-/*******************************************************************************
- MASS_GetConfigDescriptor: Get the configuration descriptor.
-*******************************************************************************/
-u8 *MASS_GetConfigDescriptor(u16 Length)
-{
- return Standard_GetDescriptorData(Length, &Config_Descriptor );
-}
-
-/*******************************************************************************
- MASS_GetStringDescriptor: Get the string descriptors according to
- the needed index.
-*******************************************************************************/
-u8 *MASS_GetStringDescriptor(u16 Length)
-{
- u8 wValue0 = pInformation->USBwValue0;
- if (wValue0 > 5) return NULL;
- else return Standard_GetDescriptorData(Length, &String_Descriptor[wValue0]);
-}
-/*******************************************************************************
- Get_Max_Lun: Handle the Get Max Lun request.
-*******************************************************************************/
-u8 *Get_Max_Lun(u16 Length)
-{
- if (Length == 0){
- pInformation->Ctrl_Info.Usb_wLength = LUN_DATA_LENGTH;
- return 0;
- } else return((u8*)(&Max_Lun));
-}
-/*******************************************************************************
-Get_SerialNum : Create the serial number string descriptor.
-*******************************************************************************/
-void Get_SerialNum(void)
-{
- u32 Device_Serial0, Device_Serial1, Device_Serial2;
-
- Device_Serial0 = SERIAL_NO1;
- Device_Serial1 = SERIAL_NO2;
- Device_Serial2 = SERIAL_NO3;
-
- if (Device_Serial0 != 0){
- MASS_StringSerial[ 2] = (u8)( Device_Serial0 & 0x000000FF);
- MASS_StringSerial[ 4] = (u8)((Device_Serial0 & 0x0000FF00) >> 8);
- MASS_StringSerial[ 6] = (u8)((Device_Serial0 & 0x00FF0000) >> 16);
- MASS_StringSerial[ 8] = (u8)((Device_Serial0 & 0xFF000000) >> 24);
-
- MASS_StringSerial[10] = (u8)( Device_Serial1 & 0x000000FF);
- MASS_StringSerial[12] = (u8)((Device_Serial1 & 0x0000FF00) >> 8);
- MASS_StringSerial[14] = (u8)((Device_Serial1 & 0x00FF0000) >> 16);
- MASS_StringSerial[16] = (u8)((Device_Serial1 & 0xFF000000) >> 24);
-
- MASS_StringSerial[18] = (u8)( Device_Serial2 & 0x000000FF);
- MASS_StringSerial[20] = (u8)((Device_Serial2 & 0x0000FF00) >> 8);
- MASS_StringSerial[22] = (u8)((Device_Serial2 & 0x00FF0000) >> 16);
- MASS_StringSerial[24] = (u8)((Device_Serial2 & 0xFF000000) >> 24);
- }
-}
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/USB_pwr.c b/S100App/Src/USB_pwr.c deleted file mode 100644 index d7663bfa..00000000 --- a/S100App/Src/USB_pwr.c +++ /dev/null @@ -1,152 +0,0 @@ -/******************** (C) COPYRIGHT 2015 e-Design Co., Ltd. ********************
- File Name : USB_pwr.c
- Version : STM32 USB Disk Ver 3.4 Author : MCD Application Team & bure
-*******************************************************************************/
-#include "USB_lib.h"
-#include "USB_conf.h"
-#include "USB_pwr.h"
-
-vu32 bDeviceState = UNCONNECTED; // USB device status
-vu8 fSuspendEnabled = TRUE; // true when suspend is possible
-
-struct{
- volatile RESUME_STATE eState;
- volatile u8 bESOFcnt;
-} ResumeS;
-
-/*******************************************************************************
- PowerOn Return : USB_SUCCESS
-
-*******************************************************************************/
-RESULT PowerOn(void)
-{
- u16 wRegVal;
-
- /*** CNTR_PWDN = 0 ***/
- wRegVal = CNTR_FRES;
- _SetCNTR(wRegVal);
- /*** CNTR_FRES = 0 ***/
- wInterrupt_Mask = 0;
- _SetCNTR(wInterrupt_Mask);
- /*** Clear pending interrupts ***/
- _SetISTR(0);
- /*** Set interrupt mask ***/
- wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM;
- _SetCNTR(wInterrupt_Mask);
-
- return USB_SUCCESS;
-}
-/*******************************************************************************
- PowerOff: handles switch-off conditions Return : USB_SUCCESS
-*******************************************************************************/
-RESULT PowerOff()
-{
- /* disable all ints and force USB reset */
- _SetCNTR(CNTR_FRES);
- /* clear interrupt status register */
- _SetISTR(0);
- /* Disable the Pull-Up*/
-// USB_Cable_Config(DISABLE);
- /* switch-off device */
- _SetCNTR(CNTR_FRES + CNTR_PDWN);
- /* sw variables reset */
- /* ... */
-
- return USB_SUCCESS;
-}
-/*******************************************************************************
- Suspend: sets suspend mode operating conditions
- Return : USB_SUCCESS.
-*******************************************************************************/
-void Suspend(void)
-{
- u16 wCNTR;
- /* suspend preparation */
- /* macrocell enters suspend mode */
- wCNTR = _GetCNTR();
- wCNTR |= CNTR_FSUSP;
- _SetCNTR(wCNTR);
- /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */
- /* power reduction */
- /* ... on connected devices */
- /* force low-power mode in the macrocell */
- wCNTR = _GetCNTR();
- wCNTR |= CNTR_LPMODE;
- _SetCNTR(wCNTR);
-}
-/*******************************************************************************
- Resume_Init: Handles wake-up restoring normal operations
-* Return : USB_SUCCESS.
-*******************************************************************************/
-void Resume_Init(void)
-{
- u16 wCNTR;
- /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */
- /* restart the clocks */
- /* CNTR_LPMODE = 0 */
- wCNTR = _GetCNTR();
- wCNTR &= (~CNTR_LPMODE);
- _SetCNTR(wCNTR);
- /* restore full power */
- /* ... on connected devices */
- /* reset FSUSP bit */
- _SetCNTR(IMR_MSK);
- /* reverse suspend preparation */
- /* ... */
-}
-/*******************************************************************************
- Resume: This is the state machine handling resume operations and
- timing sequence. The control is based on the Resume structure
- variables and on the ESOF interrupt calling this subroutine
- without changing machine state.
- Input: a state machine value (RESUME_STATE)
- RESUME_ESOF doesn't change ResumeS.eState allowing
- decrementing of the ESOF counter in different states.
-*******************************************************************************/
-void Resume(RESUME_STATE eResumeSetVal)
-{
- u16 wCNTR;
-
- if (eResumeSetVal != RESUME_ESOF) ResumeS.eState = eResumeSetVal;
- switch (ResumeS.eState){
- case RESUME_EXTERNAL:
- Resume_Init();
- ResumeS.eState = RESUME_OFF;
- break;
- case RESUME_INTERNAL:
- Resume_Init();
- ResumeS.eState = RESUME_START;
- break;
- case RESUME_LATER:
- ResumeS.bESOFcnt = 2;
- ResumeS.eState = RESUME_WAIT;
- break;
- case RESUME_WAIT:
- ResumeS.bESOFcnt--;
- if (ResumeS.bESOFcnt == 0)
- ResumeS.eState = RESUME_START;
- break;
- case RESUME_START:
- wCNTR = _GetCNTR();
- wCNTR |= CNTR_RESUME;
- _SetCNTR(wCNTR);
- ResumeS.eState = RESUME_ON;
- ResumeS.bESOFcnt = 10;
- break;
- case RESUME_ON:
- ResumeS.bESOFcnt--;
- if (ResumeS.bESOFcnt == 0){
- wCNTR = _GetCNTR();
- wCNTR &= (~CNTR_RESUME);
- _SetCNTR(wCNTR);
- ResumeS.eState = RESUME_OFF;
- }
- break;
- case RESUME_OFF:
- case RESUME_ESOF:
- default:
- ResumeS.eState = RESUME_OFF;
- break;
- }
-}
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/USB_scsi.c b/S100App/Src/USB_scsi.c deleted file mode 100644 index 5262903a..00000000 --- a/S100App/Src/USB_scsi.c +++ /dev/null @@ -1,230 +0,0 @@ -/******************** (C) COPYRIGHT 2015 e-Design Co., Ltd. ********************
- File Name : USB_scsi.c
- Version : STM32 USB Disk Ver 3.4 Author : MCD Application Team & bure
-*******************************************************************************/
-#include "USB_scsi.h"
-#include "USB_bot.h"
-#include "USB_regs.h"
-#include "usb_lib.h"
-#include "Disk.h"
-
-u8 Page00_Inquiry_Data[] ={ 0, 0, 0, 0, 0};
-u8 Mode_Sense6_data[] ={0x03, 0x00, 0x00, 0x00};
-u8 Mode_Sense10_data[] ={0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-u8 Scsi_Sense_Data[] ={0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-u8 ReadCapacity10_Data[] ={ 0, 0, 0, 0, 0, 0, 0, 0};
-u8 ReadFormatCapacity[] ={ 0, 0, 0, 8, 0, 0, 0, 0, 2, 0, 0, 0};
-
-#ifdef DFU_MODE
- uc8 Disk_Inquiry_Str[] ={0x00, 0x80, 0x02, 0x02, 36-4, 0x00, 0x00, 0x00,
- 'V', 'i', 'r', 't', 'u', 'a', 'l', ' ',
- 'D', 'F', 'U', ' ', 'D', 'i', 's', 'k',
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', ' ', ' ', ' ', };
-#else
- uc8 Disk_Inquiry_Str[] ={0x00, 0x80, 0x02, 0x02, 36-4, 0x00, 0x00, 0x00,
- 'M', 'i', 'n', 'i', ' ', 'D', 'S', 'O',
- 'D', 'i', 's', 'k', ' ', ' ', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', ' ', ' ', ' ', };
-#endif
-
-/*******************************************************************************
- SCSI_Inquiry_Cmd: SCSI Inquiry Command routine.
-*******************************************************************************/
-void SCSI_Inquiry_Cmd(void)
-{
- u8* Inquiry_Data;
- u16 Inquiry_Data_Length;
-
- if (CBW.CB[1] & 0x01){ // Evpd is set
- Inquiry_Data = Page00_Inquiry_Data;
- Inquiry_Data_Length = 5;
- } else {
- Inquiry_Data = (u8*)Disk_Inquiry_Str;
- if (CBW.CB[4] <= STANDARD_INQUIRY_DATA_LEN) Inquiry_Data_Length = CBW.CB[4];
- else Inquiry_Data_Length = STANDARD_INQUIRY_DATA_LEN;
- }
- Transfer_Data_Request(Inquiry_Data, Inquiry_Data_Length);
-}
-/*******************************************************************************
- SCSI_ReadFormatCapacity_Cmd: SCSI ReadFormatCapacity Command routine.
-*******************************************************************************/
-void SCSI_ReadFormatCapacity_Cmd(void)
-{
- ReadFormatCapacity[ 4] = (u8)(SECTOR_SIZE >> 24);
- ReadFormatCapacity[ 5] = (u8)(SECTOR_SIZE >> 16);
- ReadFormatCapacity[ 6] = (u8)(SECTOR_SIZE >> 8);
- ReadFormatCapacity[ 7] = (u8)(SECTOR_SIZE);
-
- ReadFormatCapacity[ 9] = (u8)(SECTOR_SIZE >> 16);
- ReadFormatCapacity[10] = (u8)(SECTOR_SIZE >> 8);
- ReadFormatCapacity[11] = (u8)(SECTOR_SIZE);
-
- Transfer_Data_Request(ReadFormatCapacity, READ_FORMAT_CAPACITY_DATA_LEN);
-}
-/*******************************************************************************
- SCSI_ReadCapacity10_Cmd: SCSI ReadCapacity10 Command routine.
-*******************************************************************************/
-void SCSI_ReadCapacity10_Cmd(void)
-{
- ReadCapacity10_Data[0] = (u8)(SECTOR_CNT - 1 >> 24);
- ReadCapacity10_Data[1] = (u8)(SECTOR_CNT - 1 >> 16);
- ReadCapacity10_Data[2] = (u8)(SECTOR_CNT - 1 >> 8);
- ReadCapacity10_Data[3] = (u8)(SECTOR_CNT - 1);
-
- ReadCapacity10_Data[4] = (u8)(SECTOR_SIZE >> 24);
- ReadCapacity10_Data[5] = (u8)(SECTOR_SIZE >> 16);
- ReadCapacity10_Data[6] = (u8)(SECTOR_SIZE >> 8);
- ReadCapacity10_Data[7] = (u8)(SECTOR_SIZE);
-
- Transfer_Data_Request(ReadCapacity10_Data, READ_CAPACITY10_DATA_LEN);
-}
-/*******************************************************************************
- SCSI_ModeSense6_Cmd: SCSI ModeSense6 Command routine.
-*******************************************************************************/
-void SCSI_ModeSense6_Cmd (void)
-{
- Transfer_Data_Request(Mode_Sense6_data, MODE_SENSE6_DATA_LEN);
-}
-/*******************************************************************************
- SCSI_ModeSense10_Cmd: SCSI ModeSense10 Command routine.
-*******************************************************************************/
-void SCSI_ModeSense10_Cmd (void)
-{
- Transfer_Data_Request(Mode_Sense10_data, MODE_SENSE10_DATA_LEN);
-}
-/*******************************************************************************
- SCSI_RequestSense_Cmd: SCSI RequestSense Command routine.
-*******************************************************************************/
-void SCSI_RequestSense_Cmd (void)
-{
- u8 Request_Sense_data_Length;
-
- if (CBW.CB[4] <= REQUEST_SENSE_DATA_LEN) Request_Sense_data_Length = CBW.CB[4];
- else Request_Sense_data_Length = REQUEST_SENSE_DATA_LEN;
-
- Transfer_Data_Request(Scsi_Sense_Data, Request_Sense_data_Length);
-}
-
-/*******************************************************************************
- Set_Scsi_Sense_Data: Set Scsi Sense Data routine.
-*******************************************************************************/
-void Set_Scsi_Sense_Data(u8 Sens_Key, u8 Asc)
-{
- Scsi_Sense_Data[2] = Sens_Key;
- Scsi_Sense_Data[12] = Asc;
-}
-/*******************************************************************************
- SCSI_Start_Stop_Unit_Cmd: SCSI Start_Stop_Unit Command routine.
-*******************************************************************************/
-void SCSI_Start_Stop_Unit_Cmd(void)
-{
- Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
-}
-/*******************************************************************************
- SCSI_Read10_Cmd: SCSI Read10 Command routine.
-*******************************************************************************/
-void SCSI_Read10_Cmd(u32 LBA , u32 BlockNbr)
-{
- if (Bot_State == BOT_IDLE){
- if (!(SCSI_Address_Management(SCSI_READ10, LBA, BlockNbr))) return;//address out of range
- if ((CBW.bmFlags & 0x80) != 0){
- Bot_State = BOT_DATA_IN;
- Read_Memory(LBA , BlockNbr);
- } else {
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
- }
- return;
- } else if (Bot_State == BOT_DATA_IN) Read_Memory(LBA , BlockNbr);
-}
-/*******************************************************************************
- SCSI_Write10_Cmd: SCSI Write10 Command routine.
-*******************************************************************************/
-void SCSI_Write10_Cmd(u32 LBA , u32 BlockNbr)
-{
- if (Bot_State == BOT_IDLE){
- if (!(SCSI_Address_Management(SCSI_WRITE10 , LBA, BlockNbr))) return;//address out of range
- if ((CBW.bmFlags & 0x80) == 0){
- Bot_State = BOT_DATA_OUT;
- SetEPRxStatus(ENDP2, EP_RX_VALID);
- } else {
- Bot_Abort(DIR_IN);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- }
- return;
- } else if (Bot_State == BOT_DATA_OUT) Write_Memory(LBA , BlockNbr);
-}
-/*******************************************************************************
- SCSI_Verify10_Cmd: SCSI Verify10 Command routine.
-*******************************************************************************/
-void SCSI_Verify10_Cmd(void)
-{
- if ((CBW.dDataLength == 0) && !(CBW.CB[1] & BLKVFY)){ // BLKVFY not set
- Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
- } else {
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- }
-}
-/*******************************************************************************
- SCSI_Valid_Cmd: Valid Commands routine.
-*******************************************************************************/
-void SCSI_Valid_Cmd(void)
-{
- if (CBW.dDataLength != 0){
- Bot_Abort(BOTH_DIR);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- } else Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
-}
-/*******************************************************************************
- SCSI_Valid_Cmd: Valid Commands routine.
-*******************************************************************************/
-void SCSI_TestUnitReady_Cmd(void)
-{
- Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
-}
-/*******************************************************************************
- SCSI_Invalid_Cmd: Invalid Commands routine
-*******************************************************************************/
-void SCSI_Invalid_Cmd(void)
-{
- if (CBW.dDataLength == 0) Bot_Abort(DIR_IN);
- else{
- if ((CBW.bmFlags & 0x80) != 0) Bot_Abort(DIR_IN);
- else Bot_Abort(BOTH_DIR);
- }
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
-}
-/*******************************************************************************
- SCSI_Address_Management: Test the received address.
- Input: Cmd the command can be SCSI_READ10 or SCSI_WRITE10.
- Return: Read\Write status (bool).
-*******************************************************************************/
-u8 SCSI_Address_Management(u8 Cmd , u32 LBA , u32 BlockNbr)
-{
-
- if ((LBA + BlockNbr) > SECTOR_CNT){
- if (Cmd == SCSI_WRITE10) Bot_Abort(BOTH_DIR);
- Bot_Abort(DIR_IN);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- return (FALSE);
- }
- if (CBW.dDataLength != BlockNbr * SECTOR_SIZE){
- if (Cmd == SCSI_WRITE10) Bot_Abort(BOTH_DIR);
- else Bot_Abort(DIR_IN);
- Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
- Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
- return (FALSE);
- }
- return (TRUE);
-}
-/********************************* END OF FILE ******************************/
diff --git a/S100App/Src/_APP_Startup.s b/S100App/Src/_APP_Startup.s deleted file mode 100644 index bd86eb86..00000000 --- a/S100App/Src/_APP_Startup.s +++ /dev/null @@ -1,152 +0,0 @@ -/********************* (C) COPYRIGHT 2015 e-Design Co.,Ltd. ********************
- S100 APP Ver 30.10 startup Author : bure
-*******************************************************************************/
-
- MODULE ?cstartup
-
- SECTION CSTACK:DATA:NOROOT(3)
- SECTION INTVEC:CODE:NOROOT(2)
-
- EXTERN __iar_program_start
-
- PUBLIC __vector_table
-
- DATA
-__vector_table
- DCD sfe(CSTACK)
- DCD Reset_Handler ; Reset Handler
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD MemManage_Handler ; MPU Fault Handler
- DCD BusFault_Handler ; Bus Fault Handler
- DCD UsageFault_Handler ; Usage Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; SVCall Handler
- DCD DebugMon_Handler ; Debug Monitor Handler
- DCD 0 ; Reserved
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
- THUMB
- EXPORT DFU_Func_ptr
-DFU_Func_ptr
- B.W 0;LCD_Init
- B.W 0;ClrScrn
- B.W 0;SetBlock
- B.W 0;SetPosi
- B.W 0;SetPixel
- B.W 0;ReadPixel
- B.W 0;SetPixels
- B.W 0;SendPixels
-
- B.W 0;Direction
- B.W 0;GetChar8x14
- B.W 0;DispLogo
- B.W 0;DispStr
- B.W 0;Dev_SN
- B.W 0;Lic_Gen
- B.W 0;Ident
- B.W 0;Chk_SYS
-
- B.W 0;Lic_ok
- B.W 0;DeviceInfo
- B.W 0;Delay_mS
-
- DATA
- DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
- DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
- DCD DEFAULT_ISR;//CAN_RX1_IRQHandler;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD DEFAULT_ISR;
- DCD I2C1_EV_IRQHandler;
- DCD I2C1_ER_IRQHandler;
-
- THUMB
-
- IMPORT RCC_Config
- IMPORT CTR_HP
- IMPORT USB_Istr
- IMPORT DEFAULT_ISR
- IMPORT I2C1_EV_IRQHandler
- IMPORT I2C1_ER_IRQHandler
- PUBWEAK Reset_Handler
- SECTION .text:CODE:REORDER(2)
-Reset_Handler
- LDR R0, =RCC_Config
- BLX R0
- LDR R0, =__iar_program_start
- BX R0
-
- PUBWEAK NMI_Handler
- SECTION .text:CODE:REORDER(1)
-NMI_Handler
- B NMI_Handler
-
- PUBWEAK HardFault_Handler
- SECTION .text:CODE:REORDER(1)
-HardFault_Handler
- B HardFault_Handler
-
- PUBWEAK MemManage_Handler
- SECTION .text:CODE:REORDER(1)
-MemManage_Handler
- B MemManage_Handler
-
- PUBWEAK BusFault_Handler
- SECTION .text:CODE:REORDER(1)
-BusFault_Handler
- B BusFault_Handler
-
- PUBWEAK UsageFault_Handler
- SECTION .text:CODE:REORDER(1)
-UsageFault_Handler
- B UsageFault_Handler
-
- PUBWEAK SVC_Handler
- SECTION .text:CODE:REORDER(1)
-SVC_Handler
- B SVC_Handler
-
- PUBWEAK DebugMon_Handler
- SECTION .text:CODE:REORDER(1)
-DebugMon_Handler
- B DebugMon_Handler
-
- PUBWEAK PendSV_Handler
- SECTION .text:CODE:REORDER(1)
-PendSV_Handler
- B PendSV_Handler
-
- PUBWEAK SysTick_Handler
- SECTION .text:CODE:REORDER(1)
-SysTick_Handler
- B SysTick_Handler
-
- PUBWEAK USB_HP_CAN1_TX_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USB_HP_CAN1_TX_IRQHandler
- B CTR_HP ; USB_HP_CAN1_TX_IRQHandler
-
- PUBWEAK USB_LP_CAN1_RX0_IRQHandler
- SECTION .text:CODE:REORDER(1)
-USB_LP_CAN1_RX0_IRQHandler
- B USB_Istr ; USB_LP_CAN1_RX0_IRQHandler
-
-
-
-
-
- END
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|