源码/核心板/MDK-ARM/Project.uvoptx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/MDK-ARM/Project.uvprojx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/ExternalDevices/dw_driver.c | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/ExternalDevices/dw_driver.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/ExternalDevices/led.c | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/ExternalDevices/led.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.c | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/OnChipDevices/Rcc_Nvic_Systick.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/OnChipDevices/Spi.c | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/OnChipDevices/Spi.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/OnChipDevices/Usart.c | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/OnChipDevices/Usart.h | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/main.c | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
源码/核心板/Src/stm32f10x_it.c | ●●●●● 补丁 | 查看 | 原始文档 | 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****/