久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2469|回復: 0
打印 上一主題 下一主題
收起左側

stm32F401,HSI作為時鐘源PLL為時鐘,PD2產生10K方波

[復制鏈接]
跳轉到指定樓層
樓主
  1. #include "stm32f4xx.h"
  2. #include "stm32f4xx_hal_gpio.h"
  3. #include "stm32f4xx_hal_rcc.h"

  4. // define busses presscalers High-speed APB (APB2) and low-speed APB (APB1)
  5. #define AHB_PRE         1                                        // 1, 2, 4, 8, 16, 64, 128, 256, 512
  6. #define APB1_PRE        2                                        // 1, 2, 4, 8, 16
  7. #define APB2_PRE        1                                        // 1, 2, 4, 8, 16
  8. #define SysTicksClk        10000                                // SysTick Freq = 10kHz

  9. // calculate peripheral frequencies
  10. #define SYSCLK                        46000000
  11. #define AHB                                SYSCLK/AHB_PRE
  12. #define APB1                        AHB/APB1_PRE
  13. #define APB1_TIM                APB1*2
  14. #define APB2                        AHB/APB2_PRE
  15. #define APB2_TIM                APB2*1
  16. #define SysTicks                AHB/SysTicksClk//4.6k 10k 0.1ms

  17. static void SetSysClock(void);

  18. int main()
  19. {
  20.         SetSysClock();
  21.         SysTick_Config(SysTicks);
  22.         // <=> RCC->AHB1ENR = RCC_AHB1ENR | 1 << 0 | 1 << 1
  23.         RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN |        
  24.                                         RCC_AHB1ENR_GPIOBEN |
  25.                                         RCC_AHB1ENR_GPIODEN; // GPIOD for CLK OUT

  26.         // LED1 connected to PA0, LED2 connected to PA6
  27.         GPIOA->MODER |= 1 << (0*2) | 1 << (6*2); // here 2 bits to code mode of 1 pin
  28.         GPIOD->MODER |= 1 << (2*2);
  29.         
  30.         while(1)
  31.         {
  32.                 if(!(GPIOB->IDR & GPIO_IDR_ID0))
  33.                 {
  34.                         GPIOA->ODR |= 1 << 0; // LED1 ON
  35.                         GPIOA->ODR &= ~(1 << 6);
  36.                 }
  37.                 else
  38.                 {
  39.                         GPIOA->ODR &= ~(1 << 0); // LED2 ON
  40.                         GPIOA->ODR |= 1 << 6;
  41.                 }
  42.         }
  43. }

  44. // SysTick Interrupt Handler
  45. void SysTick_Handler(void) // SysTicksClk = 10kHz, 0.0001s time=1/freq
  46. {
  47.         // pin state pediod = 0.0001s
  48.         // Frequencies output = 2*period = 0.0002s time=1/freq 5kHz 0.2ms
  49.         if(GPIOD->ODR & GPIO_ODR_OD2)                 
  50.         {                                                                        
  51.                 GPIOD->BSRR |= GPIO_BSRR_BR2;
  52.         }
  53.         else
  54.         {
  55.                 GPIOD->BSRR |= GPIO_BSRR_BS2;
  56.         }
  57. }

  58. static void SetSysClock(void)
  59. {
  60. /****************************************************************************/
  61. /*            PLL (clocked by HSI) used as System clock source              */
  62. /****************************************************************************/
  63.         //__IO uint32_t StartUpCounter = 0, HSIStatus = 0;

  64.         if ((RCC->CR & RCC_CR_HSIRDY) != RESET)
  65.         {
  66.                 /* Configure Flash prefetch, Instruction cache, Data cache and wait state */
  67.                 FLASH->ACR |= FLASH_ACR_PRFTEN;
  68.                 FLASH->ACR |= FLASH_ACR_LATENCY_2WS;
  69.                 /* HCLK = SYSCLK / 1*/
  70.                 RCC->CFGR &= ~RCC_CFGR_HPRE_Msk;  // AHBx=SYSCLK / AHB_PRE
  71.                 RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
  72.                 /* PCLK2 = HCLK / 2*/
  73.                 RCC->CFGR &= ~RCC_CFGR_PPRE1_Msk; // APB2 = AHBx / APB2_PRE
  74.                 RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
  75.                 /* PCLK1 = HCLK / 4*/
  76.                 RCC->CFGR &= ~RCC_CFGR_PPRE2_Msk; // APB1 = AHBx / APB1_PRE
  77.                 RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;

  78.                 /* Configure the main PLL */
  79.                 // RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC;
  80.                 // RCC_PLLCFGR_PLLM=16, RCC_PLLCFGR_PLLN=46, RCC_PLLCFGR_PLLP=2,
  81.                 RCC->PLLCFGR &= ~RCC_PLLCFGR_PLLM_Msk;
  82.                 RCC->PLLCFGR |= 16 << RCC_PLLCFGR_PLLM_Pos;

  83.                 RCC->PLLCFGR &= ~RCC_PLLCFGR_PLLN_Msk;
  84.                 RCC->PLLCFGR |= 92 << RCC_PLLCFGR_PLLN_Pos;

  85.                 RCC->PLLCFGR &= ~RCC_PLLCFGR_PLLP_Msk;

  86.                 /* Enable the main PLL */
  87.                 RCC->CR |= RCC_CR_PLLON;  

  88.                 /* Wait till the main PLL is ready */
  89.                 while ((RCC->CR & RCC_CR_PLLRDY) == 0)
  90.                 {}

  91.                 /* Select the main PLL as system clock source */
  92.                 RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
  93.                 RCC->CFGR |= RCC_CFGR_SW_PLL;

  94.                 /* Wait till the main PLL is used as system clock source */
  95.                 while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL)
  96.                 {}
  97.         }
  98. }


復制代碼


7.jpg (102.22 KB, 下載次數: 63)

7.jpg

8.jpg (134.34 KB, 下載次數: 89)

8.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天射色综合 | 亚洲欧美日韩精品久久亚洲区 | 久久久久久黄 | 国产精品夜夜春夜夜爽久久电影 | 欧美日韩一区二区在线观看 | 麻豆精品久久 | h漫在线观看 | 日韩国产欧美一区 | 国产夜恋视频在线观看 | 51ⅴ精品国产91久久久久久 | 午夜a√| 日韩av电影院 | 免费日韩av网站 | 91精品国产欧美一区二区成人 | 少妇精品亚洲一区二区成人 | 黄色网址在线播放 | 国产精品网址 | 欧美黄色网| 午夜影视网| 欧美不卡一区二区 | 亚洲欧美视频 | 亚洲一级毛片 | 羞羞视频网页 | 久久精品亚洲精品国产欧美kt∨ | 亚洲 欧美 日韩 精品 | 欧美一区二区三区久久精品 | 精品无码久久久久久国产 | 99久久婷婷国产亚洲终合精品 | 国产精品久久久久久久久久久久 | 国产精品视频网站 | 国产一区二区影院 | 国产美女一区二区三区 | 99热99 | 91精品国产91久久久久久最新 | 亚洲福利av | 羞羞网站在线观看 | av高清 | 久久国产精品一区二区三区 | 日韩成人免费av | www.成人久久 | 伊人狠狠 |