guanjiao
2018-05-14 a760912c22c9d85892313ae994ca9634dbe5f85d
分开各部分驱动
已添加10个文件
已修改4个文件
689 ■■■■■ 文件已修改
源码/核心板/MDK-ARM/Project.uvoptx 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/MDK-ARM/Project.uvprojx 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/ExternalDevices/dw_driver.c 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/ExternalDevices/dw_driver.h 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/ExternalDevices/led.c 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/ExternalDevices/led.h 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.c 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.h 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/OnChipDevices/Spi.c 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/OnChipDevices/Spi.h 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/OnChipDevices/Usart.c 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/OnChipDevices/Usart.h 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/main.c 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
源码/核心板/Src/stm32f10x_it.c 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Ô´Âë/ºËÐİå/MDK-ARM/Project.uvoptx
@@ -1694,4 +1694,80 @@
    </File>
  </Group>
  <Group>
    <GroupName>OnChipDevices</GroupName>
    <tvExp>1</tvExp>
    <tvExpOptDlg>0</tvExpOptDlg>
    <cbSel>0</cbSel>
    <RteFlg>0</RteFlg>
    <File>
      <GroupNumber>6</GroupNumber>
      <FileNumber>37</FileNumber>
      <FileType>1</FileType>
      <tvExp>0</tvExp>
      <tvExpOptDlg>0</tvExpOptDlg>
      <bDave2>0</bDave2>
      <PathWithFileName>..\Src\OnChipDevices\Usart.c</PathWithFileName>
      <FilenameWithoutPath>Usart.c</FilenameWithoutPath>
      <RteFlg>0</RteFlg>
      <bShared>0</bShared>
    </File>
    <File>
      <GroupNumber>6</GroupNumber>
      <FileNumber>38</FileNumber>
      <FileType>1</FileType>
      <tvExp>0</tvExp>
      <tvExpOptDlg>0</tvExpOptDlg>
      <bDave2>0</bDave2>
      <PathWithFileName>..\Src\OnChipDevices\Spi.c</PathWithFileName>
      <FilenameWithoutPath>Spi.c</FilenameWithoutPath>
      <RteFlg>0</RteFlg>
      <bShared>0</bShared>
    </File>
    <File>
      <GroupNumber>6</GroupNumber>
      <FileNumber>39</FileNumber>
      <FileType>1</FileType>
      <tvExp>0</tvExp>
      <tvExpOptDlg>0</tvExpOptDlg>
      <bDave2>0</bDave2>
      <PathWithFileName>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</PathWithFileName>
      <FilenameWithoutPath>Rcc_Nvic_Systick.c</FilenameWithoutPath>
      <RteFlg>0</RteFlg>
      <bShared>0</bShared>
    </File>
  </Group>
  <Group>
    <GroupName>ExternalDevices</GroupName>
    <tvExp>1</tvExp>
    <tvExpOptDlg>0</tvExpOptDlg>
    <cbSel>0</cbSel>
    <RteFlg>0</RteFlg>
    <File>
      <GroupNumber>7</GroupNumber>
      <FileNumber>40</FileNumber>
      <FileType>1</FileType>
      <tvExp>0</tvExp>
      <tvExpOptDlg>0</tvExpOptDlg>
      <bDave2>0</bDave2>
      <PathWithFileName>..\Src\ExternalDevices\dw_driver.c</PathWithFileName>
      <FilenameWithoutPath>dw_driver.c</FilenameWithoutPath>
      <RteFlg>0</RteFlg>
      <bShared>0</bShared>
    </File>
    <File>
      <GroupNumber>7</GroupNumber>
      <FileNumber>41</FileNumber>
      <FileType>1</FileType>
      <tvExp>0</tvExp>
      <tvExpOptDlg>0</tvExpOptDlg>
      <bDave2>0</bDave2>
      <PathWithFileName>..\Src\ExternalDevices\led.c</PathWithFileName>
      <FilenameWithoutPath>led.c</FilenameWithoutPath>
      <RteFlg>0</RteFlg>
      <bShared>0</bShared>
    </File>
  </Group>
</ProjectOpt>
Ô´Âë/ºËÐİå/MDK-ARM/Project.uvprojx
@@ -580,6 +580,41 @@
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>OnChipDevices</GroupName>
          <Files>
            <File>
              <FileName>Usart.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Usart.c</FilePath>
            </File>
            <File>
              <FileName>Spi.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Spi.c</FilePath>
            </File>
            <File>
              <FileName>Rcc_Nvic_Systick.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>ExternalDevices</GroupName>
          <Files>
            <File>
              <FileName>dw_driver.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\dw_driver.c</FilePath>
            </File>
            <File>
              <FileName>led.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\led.c</FilePath>
            </File>
          </Files>
        </Group>
      </Groups>
    </Target>
    <Target>
@@ -1153,6 +1188,41 @@
              <FileName>deca_mutex.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\platform\deca_mutex.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>OnChipDevices</GroupName>
          <Files>
            <File>
              <FileName>Usart.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Usart.c</FilePath>
            </File>
            <File>
              <FileName>Spi.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Spi.c</FilePath>
            </File>
            <File>
              <FileName>Rcc_Nvic_Systick.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>ExternalDevices</GroupName>
          <Files>
            <File>
              <FileName>dw_driver.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\dw_driver.c</FilePath>
            </File>
            <File>
              <FileName>led.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\led.c</FilePath>
            </File>
          </Files>
        </Group>
@@ -1732,6 +1802,41 @@
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>OnChipDevices</GroupName>
          <Files>
            <File>
              <FileName>Usart.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Usart.c</FilePath>
            </File>
            <File>
              <FileName>Spi.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Spi.c</FilePath>
            </File>
            <File>
              <FileName>Rcc_Nvic_Systick.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>ExternalDevices</GroupName>
          <Files>
            <File>
              <FileName>dw_driver.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\dw_driver.c</FilePath>
            </File>
            <File>
              <FileName>led.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\led.c</FilePath>
            </File>
          </Files>
        </Group>
      </Groups>
    </Target>
    <Target>
@@ -2305,6 +2410,41 @@
              <FileName>deca_mutex.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\platform\deca_mutex.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>OnChipDevices</GroupName>
          <Files>
            <File>
              <FileName>Usart.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Usart.c</FilePath>
            </File>
            <File>
              <FileName>Spi.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Spi.c</FilePath>
            </File>
            <File>
              <FileName>Rcc_Nvic_Systick.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>ExternalDevices</GroupName>
          <Files>
            <File>
              <FileName>dw_driver.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\dw_driver.c</FilePath>
            </File>
            <File>
              <FileName>led.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\led.c</FilePath>
            </File>
          </Files>
        </Group>
@@ -2884,6 +3024,41 @@
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>OnChipDevices</GroupName>
          <Files>
            <File>
              <FileName>Usart.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Usart.c</FilePath>
            </File>
            <File>
              <FileName>Spi.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Spi.c</FilePath>
            </File>
            <File>
              <FileName>Rcc_Nvic_Systick.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>ExternalDevices</GroupName>
          <Files>
            <File>
              <FileName>dw_driver.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\dw_driver.c</FilePath>
            </File>
            <File>
              <FileName>led.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\led.c</FilePath>
            </File>
          </Files>
        </Group>
      </Groups>
    </Target>
    <Target>
@@ -2931,7 +3106,7 @@
          <OutputName>UWB_Projects</OutputName>
          <CreateExecutable>1</CreateExecutable>
          <CreateLib>0</CreateLib>
          <CreateHexFile>1</CreateHexFile>
          <CreateHexFile>0</CreateHexFile>
          <DebugInformation>1</DebugInformation>
          <BrowseInformation>1</BrowseInformation>
          <ListingPath>.\Listings\</ListingPath>
@@ -3215,7 +3390,7 @@
              <MiscControls></MiscControls>
              <Define>USE_STDPERIPH_DRIVER, STM32F10X_MD</Define>
              <Undefine></Undefine>
              <IncludePath>..\Src\Libraries\CMSIS\CM3\CoreSupport;..\Src\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;..\Src\Libraries\STM32F10x_StdPeriph_Driver\inc;..\Src\decadriver;..\Src\platform</IncludePath>
              <IncludePath>..\Src\Libraries\CMSIS\CM3\CoreSupport;..\Src\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;..\Src\Libraries\STM32F10x_StdPeriph_Driver\inc;..\Src\decadriver;..\Src\platform;..\Src;..\Src\OnChipDevices;..\Src\ExternalDevices</IncludePath>
            </VariousControls>
          </Cads>
          <Aads>
@@ -3461,6 +3636,41 @@
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>OnChipDevices</GroupName>
          <Files>
            <File>
              <FileName>Usart.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Usart.c</FilePath>
            </File>
            <File>
              <FileName>Spi.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Spi.c</FilePath>
            </File>
            <File>
              <FileName>Rcc_Nvic_Systick.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\OnChipDevices\Rcc_Nvic_Systick.c</FilePath>
            </File>
          </Files>
        </Group>
        <Group>
          <GroupName>ExternalDevices</GroupName>
          <Files>
            <File>
              <FileName>dw_driver.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\dw_driver.c</FilePath>
            </File>
            <File>
              <FileName>led.c</FileName>
              <FileType>1</FileType>
              <FilePath>..\Src\ExternalDevices\led.c</FilePath>
            </File>
          </Files>
        </Group>
      </Groups>
    </Target>
  </Targets>
Ô´Âë/ºËÐİå/Src/ExternalDevices/dw_driver.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
#include "dw_driver.h"
#include "deca_sleep.h"
void Reset_DW1000(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    // Enable GPIO used for DW1000 reset
    GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);
    //drive the RSTn pin low
    GPIO_ResetBits(DW1000_RSTn_GPIO, DW1000_RSTn);
    //put the pin back to tri-state ... as input
    GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);
    deca_sleep(2);
}
void DW_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;
    /* Enable GPIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    // Enable GPIO used for DW1000 wakeup
    GPIO_InitStructure.GPIO_Pin = DW1000_WAKEUP;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DW1000_WAKEUP_GPIO, &GPIO_InitStructure);
    // Enable GPIO used for DW1000 IRQ
    GPIO_InitStructure.GPIO_Pin = DW1000_IRQ;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //IRQ pin should be Pull Down to prevent unnecessary EXT IRQ while DW1000 goes to sleep mode
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(DW1000_IRQ_GPIO, &GPIO_InitStructure);
    // Connect EXTI Line to GPIO Pin
    GPIO_EXTILineConfig(DECAIRQ_EXTI_PORT, DECAIRQ_EXTI_PIN);
    // Configure EXTI line
    EXTI_InitStructure.EXTI_Line = DECAIRQ_EXTI;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;    //MPW3 IRQ polarity is high by default
    EXTI_InitStructure.EXTI_LineCmd = DISABLE;
    EXTI_Init(&EXTI_InitStructure);
}
Ô´Âë/ºËÐİå/Src/ExternalDevices/dw_driver.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
#ifndef __DW_DRIVER_H__
#define __DW_DRIVER_H__
#include "stm32f10x.h"
#define DW1000_RSTn                    GPIO_Pin_1
#define DW1000_RSTn_GPIO            GPIOA
#define DW1000_WAKEUP                GPIO_Pin_3
#define DW1000_WAKEUP_GPIO            GPIOA
#define DW1000_IRQ                    GPIO_Pin_2
#define DW1000_IRQ_GPIO                GPIOA
#define DECAIRQ_EXTI                EXTI_Line2
#define DECAIRQ_EXTI_PORT           GPIO_PortSourceGPIOA
#define DECAIRQ_EXTI_PIN            GPIO_PinSource2
void Reset_DW1000(void);
#endif
Ô´Âë/ºËÐİå/Src/ExternalDevices/led.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
#include "led.h"
void Led_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    /* Enable GPIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    // Enable GPIO used for DW1000 wakeup
    GPIO_InitStructure.GPIO_Pin = LED0_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(LED0_GPIO, &GPIO_InitStructure);
}
void GPIO_Toggle(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
    GPIO_WriteBit(GPIOx, GPIO_Pin, (BitAction)!GPIO_ReadOutputDataBit(GPIOx, GPIO_Pin));
}
Ô´Âë/ºËÐİå/Src/ExternalDevices/led.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
#ifndef __LED_H__
#define __LED_H__
#include "stm32f10x.h"
#define LED0_PIN                    GPIO_Pin_8
#define LED0_GPIO                    GPIOA
#define LED_BLINK(...)                GPIO_Toggle(...)
#define LED0_BLINK                    LED_BLINK(LED0_GPIO, LED0_PIN)
void Led_Init(void);
#endif
Ô´Âë/ºËÐİå/Src/OnChipDevices/Rcc_Nvic_Systick.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
#include "Rcc_Nvic_Systick.h"
void Rcc_Init(void)
{
    //----------使用内部RC晶振HSI 64MHz-----------
    RCC_DeInit();                                         //将外设RCC寄存器重设为缺省值
    RCC_HSICmd(ENABLE);                                 //内部时钟使能
    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);    //等待HSI就绪
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    //选择FLASH预取指缓存的模,预取指缓存使能
    FLASH_SetLatency(FLASH_Latency_2);                   //设置FLASH存储器延时时钟周期数FLASH_Latency_2  2延时周期
    RCC_HCLKConfig(RCC_SYSCLK_Div1);                       //设置AHB时钟(HCLK) RCC_SYSCLK_Div1——AHB时钟 = ç³»ç»Ÿæ—¶é’Ÿ
    RCC_PCLK2Config(RCC_HCLK_Div1);                       //设置高速AHB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟 = HCLK
    RCC_PCLK1Config(RCC_HCLK_Div2);                     //设置低速AHB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟 = HCLK/2
    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);    //设置PLL时钟源及倍频系数,频率为8/2*16=64Mhz
    RCC_PLLCmd(ENABLE);                                   //使能PLL
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //检查指定的RCC标志位(PLL准备好标志)设置与否
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);          //设置系统时钟(SYSCLK)
    while(RCC_GetSYSCLKSource() != 0x08);                 //0x08:PLL作为系统时钟
//    //----------使用外部RC晶振 72MHz-----------
//    RCC_DeInit();           //初始化为缺省值
//    RCC_HSEConfig(RCC_HSE_ON);  //使能外部的高速时钟
//    while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); //等待外部高速时钟使能就绪
//
//    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   //Enable Prefetch Buffer
//    FLASH_SetLatency(FLASH_Latency_2);      //Flash 2 wait state
//
//    RCC_HCLKConfig(RCC_SYSCLK_Div1);        //HCLK = SYSCLK
//    RCC_PCLK2Config(RCC_HCLK_Div1);         //PCLK2 =  HCLK
//    RCC_PCLK1Config(RCC_HCLK_Div2);         //PCLK1 = HCLK/2
//    RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 8MHZ * 9 =72MHZ
//    RCC_PLLCmd(ENABLE);         //Enable PLLCLK
//
//    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait till PLLCLK is ready
//    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  //Select PLL as system clock
//    while(RCC_GetSYSCLKSource()!=0x08);     //Wait till PLL is used as system clock source
}
void Nvic_Init(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
    /* Enable and set EXTI Interrupt to the lowest priority */
    NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}
int Systick_Init(void)
{
    int time_retry = 500;
    if (SysTick_Config(64000))
    {
        /* Capture error */
        while (time_retry--);
        return 1;
    }
    NVIC_SetPriority (SysTick_IRQn, 5);
    return 0;
}
Ô´Âë/ºËÐİå/Src/OnChipDevices/Rcc_Nvic_Systick.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
#ifndef __RCC_NVIC_SYSTICK_H__
#define __RCC_NVIC_SYSTICK_H__
#include "stm32f10x.h"
void Rcc_Init(void);
void Nvic_Init(void);
int Systick_Init(void);
#endif
Ô´Âë/ºËÐİå/Src/OnChipDevices/Spi.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
#include "Spi.h"
void Spi_Init(void)
{
    SPI_InitTypeDef SPI_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    /* Enable GPIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
    /* Enable SPI clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
    /* SPI GPIO setup */
    // SPIx SCK and MOSI pin setup
    GPIO_InitStructure.GPIO_Pin = SPIx_SCK | SPIx_MOSI;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(SPIx_GPIO, &GPIO_InitStructure);
    // SPIx MISO pin setup
    GPIO_InitStructure.GPIO_Pin = SPIx_MISO;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;
    GPIO_Init(SPIx_GPIO, &GPIO_InitStructure);
    // SPIx CS pin setup
    GPIO_InitStructure.GPIO_Pin = SPIx_CS;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(SPIx_CS_GPIO, &GPIO_InitStructure);
    // Set CS high
    GPIO_SetBits(SPIx_CS_GPIO, SPIx_CS);
    SPI_I2S_DeInit(SPIx);
    // SPIx Mode setup
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPIx_CPOL;
    SPI_InitStructure.SPI_CPHA = SPIx_CPHA;
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPIx_PRESCALER_SLOW;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPIx, &SPI_InitStructure);
    // Disable SPIx SS Output
    SPI_SSOutputCmd(SPIx, DISABLE);
    // Enable SPIx
    SPI_Cmd(SPIx, ENABLE);
}
void Spi_ChangePrescaler(uint16_t scaling_factor)
{
    uint16_t tmpreg = 0;
    /* Get the SPIx CR1 value */
    tmpreg = SPIx->CR1;
    /*clear the scaling bits*/
    tmpreg &= 0xFFC7;
    /*set the scaling bits*/
    tmpreg |= scaling_factor;
    /* Write to SPIx CR1 */
    SPIx->CR1 = tmpreg;
}
Ô´Âë/ºËÐİå/Src/OnChipDevices/Spi.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
#ifndef __SPI_H__
#define __SPI_H__
#include "stm32f10x.h"
#define SPIx_PRESCALER_SLOW            SPI_BaudRatePrescaler_32
#define SPIx_PRESCALER_FAST            SPI_BaudRatePrescaler_8
#define SPIx                        SPI1
#define SPIx_GPIO                    GPIOA
#define SPIx_CS                        GPIO_Pin_4
#define SPIx_CS_GPIO                GPIOA
#define SPIx_SCK                    GPIO_Pin_5
#define SPIx_MISO                    GPIO_Pin_6
#define SPIx_MOSI                    GPIO_Pin_7
#define    SPIx_CPOL                    SPI_CPOL_Low
#define SPIx_CPHA                    SPI_CPHA_1Edge
void Spi_Init(void);
void Spi_ChangePrescaler(uint16_t scaling_factor);
#endif
Ô´Âë/ºËÐİå/Src/OnChipDevices/Usart.c
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
#include "Usart.h"
void Usart_Init(void)
{
    USART_InitTypeDef USART_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    /* Enable GPIO clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
    /* Enable USART clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    /* Configure USART Tx as alternate function push-pull */
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Pin = USART_TX_pin;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(USART_GPIO, &GPIO_InitStructure);
    /* Configure USART Rx as input floating */
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStructure.GPIO_Pin = USART_RX_pin;
    GPIO_Init(USART_GPIO, &GPIO_InitStructure);
    /* USARTx configured as follow:
          - BaudRate = 115200 baud
          - Word Length = 8 Bits
          - One Stop Bit
          - No parity
          - Hardware flow control disabled (RTS and CTS signals)
          - Receive and transmit enabled
    */
    USART_InitStructure.USART_BaudRate = BAUD_RATE ;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
    /* USART configuration */
    USART_Init(EXT_USART, &USART_InitStructure);
    /* Enable USART */
    USART_Cmd(EXT_USART, ENABLE);
}
Ô´Âë/ºËÐİå/Src/OnChipDevices/Usart.h
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
#ifndef __USART_H__
#define __USART_H__
#include "stm32f10x.h"
#define USART_TX_pin            GPIO_Pin_9
#define USART_RX_pin            GPIO_Pin_10
#define USART_GPIO                GPIOA
#define EXT_USART                USART1
#define BAUD_RATE                115200
void Usart_Init(void);
#endif
Ô´Âë/ºËÐİå/Src/main.c
@@ -24,6 +24,11 @@
#include "deca_sleep.h"
#include "lcd.h"
#include "port.h"
#include "Rcc_Nvic_Systick.h"
#include "Usart.h"
#include "Spi.h"
#include "dw_driver.h
#include "led.h"
/* Example application name and version to display on LCD screen. */
#define APP_NAME "DS TWR INIT v1.1"
@@ -207,21 +212,39 @@
uint8_t TAG_ID, ANCHOR_ID, jumptime = 0;
uint32_t rec_dist, hex_dist;
uint16_t check;
void Device_Init(void)
{
    Rcc_Init();
    Nvic_Init();
    Systick_Init();
    Led_Init();
    DW_GPIO_Init();
    Usart_Init();
    Spi_Init();
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
}
int main(void)
{
    RCC_ClocksTypeDef  RCC_Clocks;  /* Start with board specific hardware init. */
    peripherals_init();//初始化外设
    RCC_GetClocksFreq(&RCC_Clocks);
    Device_Init();
//    RCC_ClocksTypeDef  RCC_Clocks;  /* Start with board specific hardware init. */
//    peripherals_init();//初始化外设
//    RCC_GetClocksFreq(&RCC_Clocks);
    /* Display application name on LCD. */
    //  lcd_display_str(APP_NAME);
    /* Reset and initialise DW1000.
     * For initialisation, DW1000 clocks must be temporarily set to crystal speed. After initialisation SPI rate can be increased for optimum
     * performance. */
    reset_DW1000();//重启DW1000 /* Target specific drive of RSTn line into DW1000 low for a period. */
    spi_set_rate_low();//降低SPI频率
    Reset_DW1000();//重启DW1000 /* Target specific drive of RSTn line into DW1000 low for a period. */
//    spi_set_rate_low();//降低SPI频率
    dwt_initialise(DWT_LOADUCODE);//初始化DW1000
    spi_set_rate_high();//回复SPI频率
//    spi_set_rate_high();//回复SPI频率
    Spi_ChangePrescaler(SPIx_PRESCALER_FAST);    //设置为快速模式
    /* Configure DW1000. See NOTE 6 below. */
    dwt_configure(&config);//配置DW1000
Ô´Âë/ºËÐİå/Src/stm32f10x_it.c
@@ -25,15 +25,9 @@
#include "stm32f10x.h"
/* Tick timer count. */
volatile unsigned long time32_incr;
volatile unsigned long time32_reset = 0;
void SysTick_Handler(void)
{
    time32_incr++;
    time32_reset++;
    if(time32_reset > 10000)
    {
        NVIC_SystemReset();
    }
}
/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/