亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main_archive.c

?? STM32F RFID通訊源代碼(支持雙向發(fā)送接收)
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2007
 *
 *    File name   : main.c
 *    Description : CAN test
 *
 *    History :
 *    1. Date        : April 28, 2007
 *       Author      : Stanimir Bonev
 *       Description : Create
 *
 *    $Revision: 1.4 $
 **************************************************************************/
// #include <stdio.h>

#include "stm32f10x_lib.h"
#include "arm_comm.h"
#include "lcd.h"
#include "includes.h"
#include "stm32f10x_map.h"
#include "adc.h"
#include "pwm.h"
#include "bits.h"
#include "mmc.h"
#include "test.h"
#include "rtc.h"
#include "nRF24L01.h"
#include "const.h"
#include "i2c.h"
#include "drv_lisxxx.h"

#define MENU_NUMB   8

unsigned char Inversion[] = { 0, 0, 0, 0, 0, 0, 0 };

unsigned char Menu[MENU_NUMB][15] = {
 " Test MMC Card\0",
 " Test Audio   \0",
 " Test RTC     \0",
 " Test NRF     \0",
 " Test USB     \0",
 " Test MMA     \0",
 " Test Port    \0",
 " Test Joystick\0"
 // "              \0",
 // "              \0",
 // "www.olimex.com\0"
};

#define KEY_NONE    0
#define KEY_UP      1
#define KEY_DOWN    2
#define KEY_LEFT    3
#define KEY_RIGHT   4
#define KEY_CENTER  5

#define UP_VALUE        960
#define DOWN_VALUE      190
#define LEFT_VALUE     1990
#define RIGHT_VALUE     470
#define DIVERSION        30

// const static unsigned short SinTable[8] = {  0x07FF, 0x0DA7, 0x0FFF, 0x0DA7, 0x07FF, 0x0257, 0x0000, 0x0257 };

__root __no_init volatile CAN_TypeDef     ttt @ CAN_BASE;
__root __no_init volatile RCC_TypeDef     ttt1 @ RCC_BASE;
__root __no_init volatile GPIO_TypeDef    ttt2 @ GPIOB_BASE;
__root __no_init volatile AFIO_TypeDef    ttt3 @ AFIO_BASE;
__root __no_init volatile I2C_TypeDef     ttt4 @ I2C1_BASE;
__root __no_init volatile RTC_TypeDef     RTC_ttt @ RTC_BASE;

unsigned char ch=0, index=0, but1_flag=0, but2_flag=0, offset, menu_flag=0;
unsigned char config, status_temp, payload;
extern unsigned char status;
extern GPIO_InitTypeDef GPIO_InitStructure;
I2C_InitTypeDef I2C_InitStructure;
signed char new_pos=0, cur_pos=-1;
volatile unsigned int dly;
unsigned char JoyPos;
unsigned char MenuPos;
Int16U ADCValue;
unsigned char jjj=0;
unsigned char test_state=0;


void Delay_ (unsigned long a) { while (--a!=0); }

/*************************************************************************
 * Function Name: InitJoystick
 * Parameters: none
 * Return: none
 *
 * Description: Init joystick position
 *
 *************************************************************************/
void InitJoystick(void) {

  // Set variables asociates
  JoyPos = 0;
  MenuPos = 1;

  // Init
  ADCInit();

  // BUTTON CENTER as input
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  // B1 as input
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

}


/*************************************************************************
 * Function Name: GetJoystickPosition
 * Parameters: none
 * Return: Joistick position
 *
 * Description: Measure ADC and return joystick position
 *
 *************************************************************************/
unsigned char GetJoystickPosition (void) {

  ADCValue = GetADCChanel(ADC_Channel_15);

  if( (ADCValue>(UP_VALUE-DIVERSION))&&(ADCValue<(UP_VALUE+DIVERSION)) )       { return KEY_UP; }
  if( (ADCValue>(DOWN_VALUE-DIVERSION))&&(ADCValue<(DOWN_VALUE+DIVERSION)) )   { return KEY_DOWN; }
  if( (ADCValue>(LEFT_VALUE-DIVERSION))&&(ADCValue<(LEFT_VALUE+DIVERSION)) )   { return KEY_LEFT; }
  if( (ADCValue>(RIGHT_VALUE-DIVERSION))&&(ADCValue<(RIGHT_VALUE+DIVERSION)) ) { return KEY_RIGHT; }

  if((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6)) == Bit_SET) return KEY_CENTER;

  return KEY_NONE;

}

/*************************************************************************
 * Function Name: Clk_Init
 * Parameters: Int32U Frequency
 * Return: Int32U
 *
 * Description: Init clock system
 *
 *************************************************************************/
void Clk_Init(void)
{
  // 1. Cloking the controller from internal HSI RC (8 MHz)
  RCC_HSICmd(ENABLE);
  // wait until the HSI is ready
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
  // 2. Enable ext. high frequency OSC
  RCC_HSEConfig(RCC_HSE_ON);
  // wait until the HSE is ready
  while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);
  // 3. Init PLL
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); // 72MHz
//  RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9); // 72MHz
  RCC_PLLCmd(ENABLE);
  // wait until the PLL is ready
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  // 4. Set system clock divders
  RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);
  RCC_ADCCLKConfig(RCC_PCLK2_Div8);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  RCC_PCLK1Config(RCC_HCLK_Div2);
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  /* Flash 1 wait state */
  *(vu32 *)0x40022000 = 0x01;
  // 5. Clock system from PLL
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
}

/*************************************************************************
 * Function Name: USBSettings
 * Parameters: None
 * Return: None
 *
 * Description: Initialization of USB
 *
 *************************************************************************/
void USBSettings(void) {

  // Enable GPIOC clock
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);
  RCC_APB1PeriphResetCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);

  // Configure PC.12 as output push-pull (LED)
  GPIO_WriteBit(GPIOC,GPIO_Pin_12,Bit_SET);
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  // Configure PA.0 as input button (WAKE_UP)
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  USB_Init(1,2,UsbClassHidConfigure);
  HidInit();

  // Soft connection enable
  USB_ConnectRes(TRUE);

  // Enable interrupts
  __enable_interrupt();

}


/*************************************************************************
 * Function Name: UpdateMenu
 * Parameters: Position of menue
 * Return: None
 *
 * Description: Black mark of menu position
 *
 *************************************************************************/
void UpdateMenu(unsigned char pos) {

  Inversion[pos-1] = 1;

  if(menu_flag==0) {
    if(pos==8) { offset=2; menu_flag=1; }
    if(pos==7) { offset=1; }
    if(pos==1) { offset=0; }
  }
  else {
    if(pos==8) { offset=2; }
    if(pos==2) { offset=1; }
    if(pos==1) { offset=0;  menu_flag=0; }
  }


  LCDClear();
  LCDStr ( 0, Menu[0+offset], Inversion[0+offset]);
  LCDStr ( 1, Menu[1+offset], Inversion[1+offset]);
  LCDStr ( 2, Menu[2+offset], Inversion[2+offset]);
  LCDStr ( 3, Menu[3+offset], Inversion[3+offset]);
  LCDStr ( 4, Menu[4+offset], Inversion[4+offset]);
  LCDStr ( 5, Menu[5+offset], Inversion[5+offset]);
  LCDUpdate();

  Inversion[pos-1] = 0;
}

/*************************************************************************
 * Function Name: TestNRF
 * Parameters: none
 * Return: None
 *
 * Description: Send and receive one byte
 *
 *************************************************************************/
void TestNRF(void) {

  // BUTTON1 =================================================================
  // Check button1 pressed
  // if (((BUT1)==0) && (but1_flag==0))    {
  if (((BUT2)==Bit_SET) && (but2_flag==0))    {

    // Send one byte -> 0x45 -------------------------------------------------

    // Chip enable low
    CE_LOW();

    // Setting for TX device
    // Write CONFIG register -> 00001010 - CRC enable, power-up, TX
    status = SPI_Send_command_with_ADDR(W_REGISTER,CONFIG_REG_ADDR, 0x0A);

    // Send payload - send any data
    status = SPI_Send_command_without_ADDR(W_TX_PAYLOAD, 0x45);

    // Pulse for CE -> starts the transmission.
    CE_HIGH();
    CE_LOW();

    // Read STATUS register
    status = SPI_Send_command_without_ADDR(NOP, NOP);

    // if exceed number of transmision packets
    if ((status & MAX_RT) != 0) {

      // Clear MAX_RT bit in status register
      status_temp = SPI_Send_command_with_ADDR(W_REGISTER, STATUS_ADDR, (status|MAX_RT));

      // No communication event here
      // ....
    }

    // If packet sent on TX
    if ((status & TX_DS) != 0) {

      // Clear TX_DS bit in status register
      status_temp = SPI_Send_command_with_ADDR(W_REGISTER, STATUS_ADDR, (status|TX_DS));

      // Your code here
      // ...
    }


    // If TX full
    if ((status & TX_FULL) != 0)  {

      // Flush TX FIFO (in TX mode)
      status_temp = SPI_Send_command_without_ADDR(FLUSH_TX, NOP);

      // Your code here
      // ...
    }

    // End send one byte -> 0x45 ---------------------------------------------

    // Setting for RX device
    //Write CONFIG register -> 00001010 - CRC enable, power-up, RX
    status = SPI_Send_command_with_ADDR(W_REGISTER,CONFIG_REG_ADDR, 0x0B);

    // button was pressed - set flag
    but2_flag=1;

  }

  // Clear if button is already not pressed
  //if (((BUT1)!=0) && (but1_flag !=0)) {
  if (((BUT2)!=Bit_SET) && (but2_flag !=0)) {

    // Just simple delay
    Delay_(BUT_TIME);

    // clear button flag
    but2_flag = 0;
  }

  // Chip enable high
  CE_HIGH();

  // wait for receive signal - IRQ
  if ((IRQ)==0) {

    //Read STATUS status register
    status = SPI_Send_command_without_ADDR(NOP, NOP);

    // Set high when new data arrives RX FIFO
    if ((status & RX_DR) != 0) {

      // Chip enable low
      CE_LOW();

      //Read payload data
      payload=SPI_Send_command_without_ADDR(R_RX_PAYLOAD, NOP);

      // Clear RX_DR bit in status register
      status_temp = SPI_Send_command_with_ADDR(W_REGISTER, STATUS_ADDR, (status|RX_DR));
    }

    // Check received data
    if (payload == 0x46)  {

      // Clear data
      payload = 0;

      // LCD init
      LCDInit();
      LCDContrast(0x45);
      LCDClear();
      LCDStr ( 0, "   NRF Test   ", 0 );
      LCDStr ( 1, "  SUCCESS!!!  ", 0 );
      LCDStr ( 5, "exit          ", 0 );
      LCDUpdate();

    }
  }

}

unsigned char value_h;
unsigned char value_l;
unsigned int  value;
unsigned char val;

#define CMD_WRITE       0
#define CMD_READ        1
// #define LIS_ADDRESS    0x1D
#define LIS_ADDRESS    0x3A

// #define REG_WHO_AM_I   0x0f
#define REG_WHO_AM_I   0x20


void PrbI2C1(void) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美韩国综合色| 91精品久久久久久久久99蜜臂| 正在播放一区二区| 亚洲成人一区二区| 欧美日韩在线三级| 婷婷成人综合网| 51精品国自产在线| 久草中文综合在线| 国产欧美日本一区视频| 处破女av一区二区| 成人欧美一区二区三区在线播放| 成人教育av在线| 亚洲精品高清在线观看| 欧美日韩国产大片| 麻豆精品一区二区综合av| 久久午夜老司机| 成人免费电影视频| 一区二区三区四区av| 91麻豆精品国产91| 国产又粗又猛又爽又黄91精品| 亚洲国产精品ⅴa在线观看| 99久久精品国产麻豆演员表| 亚洲午夜激情av| 日韩欧美激情四射| a美女胸又www黄视频久久| 亚洲毛片av在线| 555夜色666亚洲国产免| 国产麻豆精品一区二区| 中文字幕色av一区二区三区| 欧美日韩成人综合天天影院| 极品美女销魂一区二区三区免费| 国产精品系列在线| 欧美三级中文字| 国产九色精品成人porny| 亚洲精品亚洲人成人网在线播放| 91精品国产一区二区| 成人午夜激情在线| 日日欢夜夜爽一区| 国产精品国产三级国产专播品爱网| 欧美午夜精品久久久久久超碰| 精品亚洲国产成人av制服丝袜| 亚洲人成精品久久久久久| 日韩手机在线导航| 91免费在线播放| 国产精品综合网| 丝袜美腿亚洲色图| 成人免费在线视频观看| 欧美成人三级电影在线| 色综合天天做天天爱| 国产在线精品一区二区不卡了| 亚洲激情五月婷婷| 国产欧美日韩精品一区| 日韩午夜av一区| 欧美日韩在线免费视频| www.日韩精品| 九一九一国产精品| 亚洲成av人在线观看| 亚洲日韩欧美一区二区在线| 久久综合色一综合色88| 欧美一区二区在线看| 在线视频你懂得一区| 丰满少妇久久久久久久| 精品一区二区三区免费观看| 午夜视频在线观看一区| 亚洲欧洲另类国产综合| 国产免费成人在线视频| 亚洲精品在线观看网站| 91精品国产福利在线观看 | 精品成人一区二区| 欧美在线|欧美| 91在线精品秘密一区二区| 国产999精品久久久久久绿帽| 麻豆精品在线观看| 免费在线视频一区| 日韩精品视频网| 亚洲成人黄色影院| 亚洲国产人成综合网站| 有码一区二区三区| 一区二区三区成人在线视频| 亚洲人成网站精品片在线观看| 国产精品二三区| 中文字幕免费观看一区| 国产精品麻豆一区二区| 国产精品美女视频| 亚洲欧洲色图综合| 亚洲国产精品久久久久婷婷884| 欧美国产成人在线| 国产欧美日韩综合| 中文字幕一区二区三区视频| 国产精品久久久一本精品 | 国产精品一区二区在线观看不卡| 日本aⅴ精品一区二区三区 | 亚洲香蕉伊在人在线观| 亚洲国产精品一区二区久久| 亚洲成人午夜影院| 美女www一区二区| 极品美女销魂一区二区三区| 国产iv一区二区三区| 99热精品国产| 欧美少妇一区二区| 欧美一二三四区在线| 久久综合五月天婷婷伊人| 中文一区二区完整视频在线观看| 成人欧美一区二区三区在线播放| 一区二区三区在线视频观看| 爽爽淫人综合网网站| 韩国成人在线视频| www.亚洲在线| 欧美挠脚心视频网站| 久久综合久久鬼色中文字| 国产精品福利电影一区二区三区四区| 亚洲精品欧美激情| 久久精品国产久精国产| 成人不卡免费av| 欧美日韩国产一二三| 久久久久久一二三区| 亚洲乱码一区二区三区在线观看| 视频一区在线播放| 成人网男人的天堂| 精品视频资源站| 久久丝袜美腿综合| 亚洲综合网站在线观看| 久久99精品国产麻豆不卡| www.视频一区| 精品久久久久久久人人人人传媒| 国产精品卡一卡二卡三| 日韩高清电影一区| caoporen国产精品视频| 日韩一卡二卡三卡四卡| 一区二区中文字幕在线| 免费高清在线视频一区·| 99精品黄色片免费大全| 日韩女优制服丝袜电影| 亚洲精品精品亚洲| 国产乱码精品一品二品| 欧美日韩亚洲国产综合| 中文字幕一区二区三区视频| 一区二区三区高清在线| 国产精品 欧美精品| 欧美伦理电影网| 成人欧美一区二区三区| 国产毛片精品国产一区二区三区| 欧美日韩精品一区二区三区四区| 国产欧美一区二区精品秋霞影院| 日本亚洲视频在线| 色婷婷亚洲婷婷| 中文字幕不卡的av| 激情综合网av| 91精品在线观看入口| 一区二区激情小说| 97精品国产露脸对白| 久久网站最新地址| 精一区二区三区| 在线不卡的av| 午夜视频在线观看一区二区| 91在线观看高清| 亚洲国产成人自拍| 国产一区 二区 三区一级| 日韩一区二区视频| 天堂午夜影视日韩欧美一区二区| 一本久久综合亚洲鲁鲁五月天 | 激情久久久久久久久久久久久久久久| 欧美自拍丝袜亚洲| 亚洲精品成人在线| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产精品私人自拍| 国产精品中文字幕日韩精品| 精品国产免费久久| 经典三级一区二区| 精品国产乱码久久久久久免费 | 中文字幕一区二区三区蜜月| 丁香六月久久综合狠狠色| 久久久久久久久免费| 国产九色sp调教91| 欧美激情在线看| www.99精品| 亚洲乱码中文字幕综合| 欧美自拍丝袜亚洲| 亚洲一级二级在线| 欧美日韩一区视频| 日韩高清欧美激情| 精品日韩av一区二区| 国产毛片精品国产一区二区三区| 久久精品视频免费| 99在线精品免费| 亚洲在线一区二区三区| 欧美日韩二区三区| 精品一二三四区| 国产精品女主播av| 欧美自拍偷拍一区| 日本不卡1234视频| 久久亚洲影视婷婷| 成人av手机在线观看| 亚洲女人的天堂| 91精品国产91热久久久做人人 | 亚洲精品一区二区三区在线观看| 国产一区二区美女诱惑| 国产精品久久久久一区二区三区共| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲精品成人在线|