20260324
This commit is contained in:
131
IAPV1.1/Driver/dwt/bsp_dwt.c
Normal file
131
IAPV1.1/Driver/dwt/bsp_dwt.c
Normal file
@ -0,0 +1,131 @@
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
*
|
||||
* ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : <20><><EFBFBD>ݹ۲<DDB9><DBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(DWT)ģ<><C4A3>
|
||||
* <09>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> : bsp_dwt.c
|
||||
* <09><> <20><> : V1.0
|
||||
* ˵ <20><> : <20><>CM3<4D><33>CM4<4D>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Դ<EFBFBD><D4B4>ETM, ITM <20><>DWT<57><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʵ<D2AA><CAB5>
|
||||
* DWT<57>е<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>CYCCNT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3>˹<EFBFBD><CBB9>ܷdz<DCB7><C7B3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>Ժܷ<D4BA><DCB7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <09>ļ<DEB8>¼ :
|
||||
* <09>汾<EFBFBD><E6B1BE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ˵<><CBB5>
|
||||
* V1.0 2015-08-18 Eric2013 <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* Copyright (C), 2015-2020, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> www.armfly.com
|
||||
*
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
#include "bsp.h"
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <20>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
#define DWT_CYCCNT *(volatile unsigned int *)0xE0001004
|
||||
#define DWT_CR *(volatile unsigned int *)0xE0001000
|
||||
#define DEM_CR *(volatile unsigned int *)0xE000EDFC
|
||||
#define DBGMCU_CR *(volatile unsigned int *)0xE0042004
|
||||
|
||||
#define DEM_CR_TRCENA (1 << 24)
|
||||
#define DWT_CR_CYCCNTENA (1 << 0)
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: bsp_InitDWT
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><>ʼ<EFBFBD><CABC>DWT. <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> bsp_Init() <20><><EFBFBD>á<EFBFBD>
|
||||
* <09><> <20><>: <20><>
|
||||
* <09><> <20><> ֵ: <20><>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void bsp_InitDWT(void)
|
||||
{
|
||||
DEM_CR |= (unsigned int)DEM_CR_TRCENA; /* Enable Cortex-M4's DWT CYCCNT reg. */
|
||||
DWT_CYCCNT = (unsigned int)0u;
|
||||
DWT_CR |= (unsigned int)DWT_CR_CYCCNTENA;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: bsp_DelayUS
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>CPU<50><55><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* OSSchedLock(&err);
|
||||
* bsp_DelayUS(5);
|
||||
* OSSchedUnlock(&err); <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
* <09><> <20><>: _ulDelayTime <20>ӳٳ<D3B3><D9B3>ȣ<EFBFBD><C8A3><EFBFBD>λ1 us
|
||||
* <09><> <20><> ֵ: <20><>
|
||||
* ˵ <20><>: 1. <20><>Ƶ168MHz<48><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2^32/168000000 = 25.565<EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳٵĻ<D9B5><C4BB><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD>
|
||||
* 2. ʵ<><CAB5>ͨ<EFBFBD><CDA8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><CEA2><EFBFBD>ӳٺ<D3B3><D9BA><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>0.25us<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ʱ<EFBFBD>䡣
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><>1<EFBFBD><31>. MDK5.15<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD>ȼ<EFBFBD>0, <20><>ͬ<EFBFBD><CDAC>MDK<44>Ż<EFBFBD><C5BB>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Ӱ<EFBFBD>졣
|
||||
* <20><>2<EFBFBD><32>. STM32F407IGT6
|
||||
* <20><>3<EFBFBD><33>. <20><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* GPIOI->BSRRL = GPIO_Pin_8;
|
||||
* bsp_DelayUS(10);
|
||||
* GPIOI->BSRRH = GPIO_Pin_8;
|
||||
* -------------------------------------------
|
||||
* <20><><EFBFBD><EFBFBD> ʵ<><CAB5>ִ<EFBFBD><D6B4>
|
||||
* bsp_DelayUS(1) 1.2360us
|
||||
* bsp_DelayUS(2) 2.256us
|
||||
* bsp_DelayUS(3) 3.256us
|
||||
* bsp_DelayUS(4) 4.256us
|
||||
* bsp_DelayUS(5) 5.276us
|
||||
* bsp_DelayUS(6) 6.276us
|
||||
* bsp_DelayUS(7) 7.276us
|
||||
* bsp_DelayUS(8) 8.276us
|
||||
* bsp_DelayUS(9) 9.276us
|
||||
* bsp_DelayUS(10) 10.28us
|
||||
* 3. <20><><EFBFBD><EFBFBD>32λ<32><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ٸ<EFBFBD>ֵ<EFBFBD><D6B5>32λ<32><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>Ļ<EFBFBD>ȡ<EFBFBD><C8A1>ֵ<EFBFBD><D6B5>
|
||||
* <20><><EFBFBD><EFBFBD>A,B,C<><43><EFBFBD><EFBFBD>32λ<32><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>A > B <20><>ôA - B = C<><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD>⣬<EFBFBD><E2A3AC>ȫû<C8AB><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>A < B <20><>ôA - B = C<><43> C<><43><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>0xFFFFFFFF - B + A + 1<><31><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫ<EFBFBD>ر<EFBFBD>ע<EFBFBD>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void bsp_DelayUS(uint32_t _ulDelayTime)
|
||||
{
|
||||
uint32_t tCnt, tDelayCnt;
|
||||
uint32_t tStart;
|
||||
|
||||
tStart = DWT_CYCCNT; /* <20>ս<EFBFBD><D5BD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
tCnt = 0;
|
||||
tDelayCnt = _ulDelayTime * (SystemCoreClock / 1000000); /* <20><>Ҫ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
while(tCnt < tDelayCnt)
|
||||
{
|
||||
tCnt = DWT_CYCCNT - tStart; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD> */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*********************************************************************************************************
|
||||
* <09><> <20><> <20><>: bsp_DelayMS
|
||||
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: Ϊ<><CEAA><EFBFBD>õײ<C3B5><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>RTOS<4F><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8>õļ<C3B5><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ר<><D7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ӳٺ<D3B3><D9BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵײ<DAB5><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ms<6D><73><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>ʵʱ<CAB5>ԡ<EFBFBD>
|
||||
* <09><> <20><>: n <20>ӳٳ<D3B3><D9B3>ȣ<EFBFBD><C8A3><EFBFBD>λ1 ms
|
||||
* <09><> <20><> ֵ: <20><>
|
||||
*********************************************************************************************************
|
||||
*/
|
||||
void bsp_DelayMS(uint32_t _ulDelayTime)
|
||||
{
|
||||
bsp_DelayUS(1000*_ulDelayTime);
|
||||
}
|
||||
|
||||
void bsp_DelayDWT(uint32_t _ulDelayTime)
|
||||
{
|
||||
uint32_t tCnt, tDelayCnt;
|
||||
uint32_t tStart;
|
||||
|
||||
tCnt = 0;
|
||||
tDelayCnt = _ulDelayTime; /* <20><>Ҫ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
tStart = DWT_CYCCNT; /* <20>ս<EFBFBD><D5BD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
||||
|
||||
while(tCnt < tDelayCnt)
|
||||
{
|
||||
tCnt = DWT_CYCCNT - tStart; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD> */
|
||||
}
|
||||
}
|
||||
|
||||
/***************************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> www.armfly.com (END OF FILE) *********************************/
|
||||
Reference in New Issue
Block a user