亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
STM32H750單片機(jī)LPUART+BDMA控制程序
[打印本頁]
作者:
輝耀石
時(shí)間:
2025-4-30 11:21
標(biāo)題:
STM32H750單片機(jī)LPUART+BDMA控制程序
STM32H750 LPUART + BDMA 控制,認(rèn)證 BDMA 使用
注意:BDMA 只能使用 SRAM4
#include "cspDwt.h"
#include <stdio.h>
#include "stm32h7xx_hal.h"
/* mdk 下載需要 勾選 Stop After Reset */
/* DWT 計(jì)時(shí)功能 */
typedef struct
{
unsigned char count;
unsigned int note[DWT_NOTE_MAX_NUMBER + 1];
}Ctrl_t;
static Ctrl_t s_ctrl = {0};
static Ctrl_t *p = &s_ctrl;
/* ----- DWT 延時(shí) ----- */
#define DWT_CR *(volatile uint32_t *)0xE0001000
#define DWT_CYCCNT *(volatile uint32_t *)0xE0001004
#define DEM_CR *(volatile uint32_t *)0xE000EDFC
#define DEM_CR_TRCENA (1 << 24)
#define DWT_CR_CYCCNTENA (1 << 0)
/**
* @brief DWT 延時(shí)初始化
* @param void
* @return void
*/
void cDwt_Init(void)
{
DEM_CR |= DEM_CR_TRCENA;
DWT_CR |= DWT_CR_CYCCNTENA;
}
/**
* @brief DWT 微秒延時(shí)
* @param US 延時(shí)計(jì)數(shù)
* @return void
*/
void cDwt_DelayUs(unsigned int us)
{
unsigned int startTime = DWT_CYCCNT;
unsigned int time = us * (SystemCoreClock / (1000000));
unsigned int endTime = startTime + time;
if (endTime > startTime)
{
while ((DWT_CYCCNT > startTime) && (DWT_CYCCNT < endTime));
}
else
{
while ((DWT_CYCCNT > startTime) && (DWT_CYCCNT < endTime));
}
}
/**
* @brief DWT 毫秒延時(shí)
* @param MS 延時(shí)計(jì)數(shù)
* @return void
*/
void cDwt_DelayMs(unsigned int ms)
{
for(unsigned int i = 0; i < ms; i++)
{
cDwt_DelayUs(1000);
}
}
/* 計(jì)時(shí)結(jié)束清零 */
void cDwt_Start(void)
{
p->count = 1;
p->note[0] = DWT_CYCCNT;
}
/* 計(jì)時(shí)打點(diǎn) */
void cDwt_Note(void)
{
if (p->count >= DWT_NOTE_MAX_NUMBER)
{
printf("%s 計(jì)時(shí)失敗 計(jì)時(shí)點(diǎn)不足\r\n", __func__);
}
p->note[p->count] = DWT_CYCCNT;
p->count++;
}
/* 計(jì)時(shí)結(jié)束 + 打印時(shí)間參數(shù) */
void cDwt_End(void)
{
unsigned int coreClock = HAL_RCC_GetSysClockFreq() / 1000000;
unsigned int realCount = 0;
unsigned int totalUs = 0;
unsigned int showUs = 0;
unsigned int showMs = 0;
unsigned int showS = 0;
for (int i = 0; i < p->count; i++)
{
/* 判斷時(shí)鐘是否重新計(jì)時(shí) */
if (p->note[i] < p->note[0])
{
realCount = 0xFFFFFFFF - p->note[0] + p->note[i];
}
else
{
realCount = p->note[i] - p->note[0];
}
totalUs = realCount / coreClock;
showS = totalUs / 1000000;
showMs = (totalUs - showS * 1000000) / 1000;
showUs = (totalUs - showS * 1000000 - showMs * 1000);
printf("Time[%d]-[%d]s-[%d]ms-[%d]us\r\n", i, showS, showMs, showUs);
}
}
復(fù)制代碼
原理圖: 無
仿真: 無
代碼:
STM32H750VB_CubeMx_LPUART_BDMA.7z
(812.65 KB, 下載次數(shù): 0)
2025-5-1 14:47 上傳
點(diǎn)擊文件名下載附件
示例代碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1