From a760912c22c9d85892313ae994ca9634dbe5f85d Mon Sep 17 00:00:00 2001
From: guanjiao <sqrgj@163.com>
Date: 星期一, 14 五月 2018 23:25:02 +0800
Subject: [PATCH] 分开各部分驱动

---
 源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.h |   11 
 源码/核心板/MDK-ARM/Project.uvprojx              |  214 +++++++++++++++++
 源码/核心板/Src/ExternalDevices/led.h            |   15 +
 源码/核心板/Src/stm32f10x_it.c                   |    6 
 源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.c |   72 ++++++
 源码/核心板/Src/OnChipDevices/Spi.h              |   25 ++
 源码/核心板/Src/main.c                           |   35 ++
 源码/核心板/Src/ExternalDevices/dw_driver.c      |   56 ++++
 源码/核心板/Src/OnChipDevices/Spi.c              |   73 ++++++
 源码/核心板/MDK-ARM/Project.uvoptx               |   76 ++++++
 源码/核心板/Src/ExternalDevices/dw_driver.h      |   21 +
 源码/核心板/Src/OnChipDevices/Usart.c            |   46 +++
 源码/核心板/Src/ExternalDevices/led.c            |   21 +
 源码/核心板/Src/OnChipDevices/Usart.h            |   18 +
 14 files changed, 675 insertions(+), 14 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx"
index 058de8d..9d74f2c 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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>
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx"
index 395a9fa..b4aeddd 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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>
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/dw_driver.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/dw_driver.c"
new file mode 100644
index 0000000..62b7c23
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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);
+
+}
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/dw_driver.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/dw_driver.h"
new file mode 100644
index 0000000..89bc1bd
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/led.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/led.c"
new file mode 100644
index 0000000..9a194da
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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));
+}
+
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/led.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/led.h"
new file mode 100644
index 0000000..ccf5a55
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.c"
new file mode 100644
index 0000000..cd517b6
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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;
+	
+}
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Rcc_Nvic_Systick.h"
new file mode 100644
index 0000000..435b318
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.c"
new file mode 100644
index 0000000..04ee781
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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;
+}
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.h"
new file mode 100644
index 0000000..bdeaa69
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Usart.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Usart.c"
new file mode 100644
index 0000000..d410b56
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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);
+
+}
+
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Usart.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Usart.h"
new file mode 100644
index 0000000..13d3a56
--- /dev/null
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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
+
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
index 20697f8..995e3b7 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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
diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c"
index c86df78..30c04c1 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/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****/

--
Gitblit v1.9.3