久久久久久久999_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

  1. #include "cspDwt.h"

  2. #include <stdio.h>

  3. #include "stm32h7xx_hal.h"

  4. /* mdk 下載需要 勾選 Stop After Reset */

  5. /* DWT 計(jì)時(shí)功能 */
  6. typedef struct
  7. {
  8.     unsigned char count;
  9.     unsigned int note[DWT_NOTE_MAX_NUMBER + 1];
  10.    
  11. }Ctrl_t;

  12. static Ctrl_t s_ctrl = {0};
  13. static Ctrl_t *p = &s_ctrl;

  14. /* ----- DWT 延時(shí) -----        */
  15. #define  DWT_CR             *(volatile uint32_t *)0xE0001000
  16. #define  DWT_CYCCNT         *(volatile uint32_t *)0xE0001004
  17. #define  DEM_CR             *(volatile uint32_t *)0xE000EDFC
  18. #define  DEM_CR_TRCENA      (1 << 24)
  19. #define  DWT_CR_CYCCNTENA   (1 <<  0)

  20. /**
  21. * @brief  DWT 延時(shí)初始化
  22. * @param  void
  23. * @return void
  24. */
  25. void cDwt_Init(void)
  26. {
  27.     DEM_CR |= DEM_CR_TRCENA;
  28.     DWT_CR |= DWT_CR_CYCCNTENA;
  29. }

  30. /**
  31. * @brief  DWT 微秒延時(shí)
  32. * @param  US 延時(shí)計(jì)數(shù)
  33. * @return void
  34. */
  35. void cDwt_DelayUs(unsigned int us)
  36. {
  37.     unsigned int startTime = DWT_CYCCNT;
  38.     unsigned int time =  us * (SystemCoreClock / (1000000));
  39.     unsigned int endTime = startTime + time;
  40.    
  41.     if (endTime > startTime)
  42.     {
  43.         while ((DWT_CYCCNT > startTime) && (DWT_CYCCNT < endTime));
  44.     }
  45.     else
  46.     {
  47.         while ((DWT_CYCCNT > startTime) && (DWT_CYCCNT < endTime));
  48.     }
  49. }

  50. /**
  51. * @brief  DWT 毫秒延時(shí)
  52. * @param  MS 延時(shí)計(jì)數(shù)
  53. * @return void
  54. */
  55. void cDwt_DelayMs(unsigned int ms)
  56. {
  57.     for(unsigned int i = 0; i < ms; i++)
  58.     {
  59.         cDwt_DelayUs(1000);
  60.     }
  61. }

  62. /* 計(jì)時(shí)結(jié)束清零 */
  63. void cDwt_Start(void)
  64. {
  65.     p->count = 1;
  66.     p->note[0] = DWT_CYCCNT;
  67. }

  68. /* 計(jì)時(shí)打點(diǎn) */
  69. void cDwt_Note(void)
  70. {
  71.     if (p->count >= DWT_NOTE_MAX_NUMBER)
  72.     {
  73.         printf("%s 計(jì)時(shí)失敗 計(jì)時(shí)點(diǎn)不足\r\n", __func__);
  74.     }
  75.    
  76.     p->note[p->count] = DWT_CYCCNT;
  77.     p->count++;
  78. }

  79. /* 計(jì)時(shí)結(jié)束 + 打印時(shí)間參數(shù) */
  80. void cDwt_End(void)
  81. {
  82.     unsigned int coreClock = HAL_RCC_GetSysClockFreq() / 1000000;
  83.     unsigned int realCount = 0;
  84.     unsigned int totalUs = 0;
  85.     unsigned int showUs = 0;
  86.     unsigned int showMs = 0;
  87.     unsigned int showS = 0;
  88.     for (int i = 0; i < p->count; i++)
  89.     {
  90.         /* 判斷時(shí)鐘是否重新計(jì)時(shí) */
  91.         if (p->note[i] < p->note[0])
  92.         {
  93.             realCount = 0xFFFFFFFF - p->note[0] + p->note[i];
  94.         }
  95.         else
  96.         {
  97.             realCount = p->note[i] - p->note[0];
  98.         }
  99.         
  100.         totalUs = realCount / coreClock;
  101.         showS = totalUs / 1000000;
  102.         showMs = (totalUs - showS * 1000000) / 1000;
  103.         showUs = (totalUs - showS * 1000000 - showMs * 1000);
  104.         printf("Time[%d]-[%d]s-[%d]ms-[%d]us\r\n", i, showS, showMs, showUs);
  105.     }
  106. }



復(fù)制代碼
原理圖: 無
仿真: 無
代碼: STM32H750VB_CubeMx_LPUART_BDMA.7z (812.65 KB, 下載次數(shù): 0)





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品久久久久久高潮 | 久久男女视频 | 一区二区三区四区国产 | 性色的免费视频 | 国产精品亚洲一区二区三区在线观看 | 亚洲精品电影在线观看 | 午夜精品一区二区三区在线视频 | 91视在线国内在线播放酒店 | 成人羞羞国产免费视频 | av国产精品| 色网在线观看 | 三级成人在线 | 免费观看国产视频在线 | 欧美日韩视频在线 | 日韩三区 | 天天视频一区二区三区 | 在线观看国产视频 | 青青草一区二区三区 | www.888www看片| 久久国产精品网 | 亚洲成人免费 | 精品视频一区在线 | 日韩一区二区三区在线观看 | 国产十日韩十欧美 | 久久久久国色av免费观看性色 | 欧美精品一区在线 | 日韩一级精品视频在线观看 | 99reav| 欧美在线网站 | 免费观看一级毛片 | 日韩在线| 狠狠做深爱婷婷综合一区 | 亚洲精彩视频在线观看 | 午夜影院| 国产激情视频 | 国产精品777一区二区 | 成年人在线视频 | 久久国产精品精品 | 国产高清在线精品 | 一区二区三区四区不卡 | av网站免费观看 |