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

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

?? main.c

?? STM32F RFID通訊源代碼(支持雙向發送接收)
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************
 *
 *    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   9

unsigned char Inversion[] = { 0, 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 Acceler.\0",
 " Test Port    \0",
 " Test UEXT    \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==9) { offset=3; menu_flag=1; }
    if(pos==8) { offset=2; menu_flag=1; }
    if(pos==7) { offset=1; }
    if(pos==1) { offset=0; }
  }
  else {
    if(pos==9) { offset=3; }
		if(pos==8) { offset=2; }
    if(pos==7) { 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();

    }
  }

}


// MMA -------------------------------------------------------------------------

#define WHO_AM_I          0x0F
#define OFFSET_X          0x16
#define OFFSET_Y          0x17
#define OFFSET_Z          0x18
#define GAIN_X            0x19
#define GAIN_Y            0x1A
#define GAIN_Z            0x1B
#define CTRL_REG1         0x20
#define CTRL_REG2         0x21
#define CTRL_REG3         0x22
#define HP_FILTER_RESET   0x23
#define STATUS_REG        0x27
#define OUTX_L            0x28
#define OUTX_H            0x29
#define OUTY_L            0x2A
#define OUTY_H            0x2B
#define OUTZ_L            0x2C
#define OUTZ_H            0x2D
#define FF_WU_CFG         0x30
#define FF_WU_SRC         0x31
#define FF_WU_ACK         0x32
#define FF_WU_THS_L       0x34
#define FF_WU_THS_H       0x35
#define FF_WU_DURATION    0x36
#define DD_CFG            0x38
#define DD_SRC            0x39
#define DD_ACK            0x3A
#define DD_THSI_L         0x3C
#define DD_THSI_H         0x3D
#define DD_THSE_L         0x3E
#define DD_THSE_H         0x3F
#define LIS_ADDRESS       0x3A

char buff_x[10];
char buff_y[10];
char buff_z[10];

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



void InitMMA(void) {

   // GPIOB Periph clock enable
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

  // Configure PB5 as input - SENS_INT
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  Hrd_I2C_Init();

  // Who Am I
  ReadReg(&val, WHO_AM_I);    // have to be 0x3A

  // Set CTRL_REG1
  // WriteReg(0xC7, CTRL_REG1);
  WriteReg(0xC7, CTRL_REG1);
  //ReadReg(&val, CTRL_REG1);

  // Set CTRL_REG2

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区av电影 | 日本一区二区视频在线| 美女任你摸久久| 日韩欧美美女一区二区三区| 日日夜夜精品免费视频| 欧美一级艳片视频免费观看| 麻豆国产91在线播放| 久久婷婷色综合| 99久久伊人久久99| 亚洲激情自拍偷拍| 欧美日本在线播放| 激情图区综合网| 国产精品国产成人国产三级| 在线看国产一区二区| 欧美aⅴ一区二区三区视频| 久久久久久日产精品| 91麻豆精品在线观看| 图片区小说区区亚洲影院| 精品国产乱码久久| 99久久夜色精品国产网站| 亚洲网友自拍偷拍| 26uuu久久综合| 91精彩视频在线观看| 久久综合综合久久综合| 国产精品久久久久久亚洲伦| 欧美日韩成人一区| 国产1区2区3区精品美女| 亚洲三级免费电影| 精品国产免费久久| 日本高清视频一区二区| 精品一二线国产| 亚洲免费高清视频在线| 欧美va亚洲va在线观看蝴蝶网| 成人国产亚洲欧美成人综合网| 午夜av一区二区| 亚洲国产激情av| 日韩欧美在线1卡| 在线亚洲人成电影网站色www| 精一区二区三区| 亚洲一区二区三区自拍| 精品动漫一区二区三区在线观看| 色嗨嗨av一区二区三区| 国产真实精品久久二三区| 亚洲国产欧美在线| 国产精品视频你懂的| 日韩欧美一级特黄在线播放| 91成人免费在线| 国产伦精品一区二区三区视频青涩| 尤物av一区二区| 国产欧美日韩在线看| 日韩一区和二区| 欧美视频一区在线| 99精品黄色片免费大全| 国产一区在线视频| 麻豆成人免费电影| 天天综合天天综合色| 一区二区视频在线| 国产精品久久毛片a| 精品对白一区国产伦| 5566中文字幕一区二区电影| 色婷婷综合久久久久中文| av男人天堂一区| 国产伦精一区二区三区| 国内不卡的二区三区中文字幕| 天堂一区二区在线免费观看| 亚洲一区影音先锋| 亚洲精品v日韩精品| 亚洲精品久久嫩草网站秘色| 国产精品欧美久久久久一区二区 | 91麻豆福利精品推荐| 成人性视频网站| 成人午夜视频免费看| 国产激情视频一区二区在线观看| 麻豆国产欧美一区二区三区| 免费在线一区观看| 伦理电影国产精品| 久久er99精品| 黄一区二区三区| 国产乱人伦偷精品视频不卡| 国内外精品视频| 国产毛片精品国产一区二区三区| 黄色资源网久久资源365| 韩国精品一区二区| 国产激情精品久久久第一区二区| 韩国视频一区二区| 国产成人免费视频| 99视频一区二区| 在线观看亚洲精品视频| 欧美色网站导航| 337p亚洲精品色噜噜| 精品国产青草久久久久福利| 久久久久国产精品麻豆| 国产精品热久久久久夜色精品三区 | 五月激情综合网| 青青青伊人色综合久久| 九一九一国产精品| 国产成人午夜电影网| 99精品桃花视频在线观看| 不卡一区二区中文字幕| 在线观看欧美精品| 欧美电视剧免费观看| 欧美国产禁国产网站cc| 亚洲精品网站在线观看| 日本三级亚洲精品| 国产精品一区二区在线观看网站| 成人午夜激情影院| 色视频成人在线观看免| 欧美一区午夜视频在线观看| www国产精品av| 亚洲欧美日韩成人高清在线一区| 视频在线在亚洲| 国产成人综合在线| 欧美影院精品一区| 亚洲精品一区二区三区99| 亚洲六月丁香色婷婷综合久久| 日韩和欧美一区二区| 丁香婷婷深情五月亚洲| 欧美日韩国产系列| 国产亚洲成年网址在线观看| 亚洲一区二区三区国产| 精品一二三四区| 在线看一区二区| 久久免费午夜影院| 亚洲va国产天堂va久久en| 国产成人啪免费观看软件| 欧美日韩精品免费观看视频| 久久久久99精品国产片| 香蕉久久一区二区不卡无毒影院 | 国产成人av影院| 欧美理论在线播放| 中文字幕一区二区三区在线观看| 日韩高清不卡在线| 一本大道久久a久久精品综合| 亚洲精品在线电影| 午夜精品久久久久| 91麻豆精品秘密| 国产无一区二区| 免费在线看一区| 欧美日韩一二三| 日韩美女啊v在线免费观看| 国内外成人在线| 日韩午夜在线观看视频| 欧美变态tickle挠乳网站| 国产精品日韩精品欧美在线| 久久超碰97中文字幕| 欧美日本精品一区二区三区| 日韩一区中文字幕| 国产成人精品www牛牛影视| 日韩视频一区二区三区| 亚洲一区二区三区四区在线观看 | 国产精品一区二区久久精品爱涩| 欧美日韩精品福利| 亚洲美女电影在线| jlzzjlzz亚洲日本少妇| 国产情人综合久久777777| 国产一区二区在线视频| 精品女同一区二区| 九一九一国产精品| 精品国产一区a| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩成人一区二区| 亚洲v日本v欧美v久久精品| 色婷婷精品大在线视频| 亚洲美女淫视频| 91行情网站电视在线观看高清版| 中文字幕日韩一区| 色欧美日韩亚洲| 一区二区三区在线视频免费观看 | 国产91精品精华液一区二区三区 | 懂色av一区二区夜夜嗨| 久久久久久久久久久久久夜| 久久99久久99精品免视看婷婷 | 精品亚洲国产成人av制服丝袜| 欧美一区二区在线免费观看| 丝袜诱惑制服诱惑色一区在线观看| 欧美无砖专区一中文字| 亚洲午夜精品在线| 91精品蜜臀在线一区尤物| 人人超碰91尤物精品国产| 日韩免费高清av| 国产福利精品一区二区| 欧美国产精品一区二区三区| gogo大胆日本视频一区| 亚洲美女少妇撒尿| 91精品国产综合久久福利软件| 日本 国产 欧美色综合| 久久久天堂av| 99久久99久久久精品齐齐| 亚洲综合免费观看高清完整版在线| 欧美视频一区二区三区四区| 日本不卡123| 国产欧美日韩三级| 色婷婷av一区二区三区软件| 婷婷开心激情综合| 国产亚洲欧洲一区高清在线观看| 欧美精品一区二区三| 国产精品一区二区你懂的| 亚洲天堂2014| 日韩欧美精品三级| 成人免费观看av|