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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5743|回復: 2
收起左側

stm32f103R6,PWM控制蜂鳴器頻率串口輸出(附帶源碼和仿真圖)

[復制鏈接]
ID:766423 發表于 2020-6-1 12:42 | 顯示全部樓層 |閱讀模式
代碼僅供參考,小白一枚,請多指教。其中利用了system,TIM2,USART1,按鍵中斷等stm32基本設置。
仿真.PNG 51hei.png 源代碼.PNG

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "KEY-LED.h"
  3. #include "bsp_usart.h"
  4. #include <string.h>
  5. #include "bsp_systick.h"
  6. #include "bsp_time.h"


  7. void Delay( uint32_t t );
  8. void RCC_Configuration(void);
  9. void EXTI_Configration(void);
  10. void NVIC_Configration(void);

  11. uint16_t Key_Value=0;

  12. void Delay( uint32_t t )
  13. {       
  14.                 while(--t);
  15. }

  16. void RCC_Configration(void)
  17. {
  18. ErrorStatus HSEStartUpStatus;         /* 定義枚舉類型變量 HSEStartUpStatus */

  19.         /* 復位系統時鐘設置*/
  20.         RCC_DeInit();
  21.         /* 開啟HSE*/
  22.         RCC_HSEConfig(RCC_HSE_ON);
  23.         /* 等待HSE起振并穩定*/
  24.         HSEStartUpStatus = RCC_WaitForHSEStartUp();
  25.         /* 判斷HSE起是否振成功,是則進入if()內部 */
  26.         if(HSEStartUpStatus == SUCCESS)
  27.         {
  28.                 /* 選擇HCLK(AHB)時鐘源為SYSCLK 1分頻 */
  29.                 RCC_HCLKConfig(RCC_SYSCLK_Div1);
  30.                 /* 選擇PCLK2時鐘源為 HCLK(AHB) 1分頻 */
  31.                 RCC_PCLK2Config(RCC_HCLK_Div1);
  32.                 /* 選擇PCLK1時鐘源為 HCLK(AHB) 8分頻   9M*/
  33.                 RCC_PCLK1Config(RCC_HCLK_Div1);
  34. //                /* 選擇鎖相環(PLL)時鐘源為HSE 1分頻,倍頻數為4,則PLL輸出頻率為 8MHz * 4 = 32MHz */
  35. //                RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);
  36. //                /* 使能PLL */
  37. //                RCC_PLLCmd(ENABLE);
  38. //                /* 等待PLL輸出穩定 */
  39. //                while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  40.                 /* 選擇SYSCLK時鐘源為HSE */
  41.                 RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);
  42.                 /* 等待HSE成為SYSCLK時鐘源 */
  43.                 while(RCC_GetSYSCLKSource() != 0x04);
  44.         }
  45. }       
  46. void EXTI_Configration()
  47. {
  48.                 EXTI_InitTypeDef  EXTI_InitStructure;
  49.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
  50.                 //調用GPIO_EXTILineConfig函數分配引腳
  51.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
  52.                 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);
  53.     //調用EXTI_Init函數配置外部中斷
  54.           EXTI_InitStructure.EXTI_Line=EXTI_Line0|EXTI_Line13;
  55.           EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
  56.           EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
  57.           EXTI_InitStructure.EXTI_LineCmd=ENABLE;
  58.           EXTI_Init(&EXTI_InitStructure);
  59.          
  60. }
  61. /*配置中斷優先級*/
  62. void NVIC_Configration ( )
  63. {
  64.         NVIC_InitTypeDef NVIC_InitStructure;
  65.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  66.        
  67.         NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;
  68.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  69.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  70.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  71.   NVIC_Init(&NVIC_InitStructure);
  72.        
  73.         NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
  74.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
  75.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  76.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  77.   NVIC_Init(&NVIC_InitStructure);
  78.        
  79.         NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
  80.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  81.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  82.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  83.   NVIC_Init(&NVIC_InitStructure);
  84.        
  85.         NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
  86.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
  87.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  88.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  89.   NVIC_Init(&NVIC_InitStructure);
  90. }

  91. void SoftTimerInit(void)
  92. {
  93.   bsp_StartAutoTimer(Key_Scan_TMR_ID,10);
  94. }

  95. int main()
  96. {       
  97.         RCC_Configration();
  98.   Key_Configration();
  99.         NVIC_Configration();
  100.         bsp_InitSysTick();
  101.   SoftTimerInit();       
  102.         EXTI_Configration();
  103.   TIM2_Configuration(5000);
  104.   USART1_Configration();

  105.   printf("--------嵌入式創新設計--------\r\n");
  106.   printf("基于stm32的PWM波調節蜂鳴器頻率\r\n");
  107.         printf("------------------------------\r\n");
  108.         printf("key1頻率減小      key2頻率增加\r\n");       
  109.        
  110. while(1)
  111. {

  112.                  if( bsp_CheckTimer(Key_Scan_TMR_ID) )
  113.          {
  114.                  Key_Value = Key_Prosse();
  115.          }
  116.          if(gKey.KeyStatu == 1)
  117.          {
  118.            if(Key_Value == 1)
  119.                  {
  120.                          Key_Value=0;
  121.                          
  122.                          if(TIM2->ARR < 10000)
  123.                          {
  124.                                  TIM2->ARR += 500;
  125.                          }
  126.                          else if(TIM2->ARR >= 10000)
  127.                          {
  128. //                                 TIM2->ARR = 10000;
  129.                                  printf("超過范圍\r\n");
  130.                          }
  131.                  }                         
  132.                  else if(Key_Value == 2)
  133.                  {
  134.                           Key_Value=0;
  135.                          
  136.                          if(TIM2->ARR > 500)
  137.                          {
  138.                            TIM2->ARR -= 500;
  139.                          }
  140.                           else if(TIM2->ARR <= 500)
  141.                          {
  142. //                                 TIM2->ARR = 500;
  143.                                  printf("超過范圍\r\n");
  144.                          }       
  145.                  }
  146.                  TIM2->CCR2=(TIM2->ARR)/2;
  147.          }
  148. }
  149. }        
復制代碼

所有資料51hei提供下載:
創新設計.7z (315.86 KB, 下載次數: 200)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:743715 發表于 2020-6-14 11:17 | 顯示全部樓層
大佬,這個led和數碼管沒反應啊,這個有什么作用?
回復

使用道具 舉報

ID:607298 發表于 2020-9-27 18:28 | 顯示全部樓層
感謝分享,正要用這顆芯片
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91欧美精品 | 久久99精品久久久水蜜桃 | caoporn国产精品免费公开 | 五月网婷婷 | 伊人网在线播放 | 日本在线免费看最新的电影 | 欧美日韩专区 | 欧美精品一区二区三区在线播放 | 艹逼网 | 亚洲国产成人精品女人 | 91精产国品一二三区 | 毛片一区二区三区 | 五月精品视频 | 91麻豆产精品久久久久久 | 91人人爽 | 综合久久综合久久 | 黄色大片网站 | 国产精品五区 | 99视频| 97精品一区二区 | 中文字幕一区二区三 | 国产精品久久久久永久免费观看 | 亚洲一区二区在线播放 | www.久草.com | 日韩中文字幕久久 | 日韩精品在线观看一区二区三区 | 拍真实国产伦偷精品 | 毛片区| 久久久精品一区二区三区 | 五月婷婷 六月丁香 | 日韩亚洲一区二区 | 日韩伦理电影免费在线观看 | 看a网站| 国产精品福利网站 | 精品在线一区 | 久久乐国产精品 | 久久九九影视 | 久久这里有精品 | 日本久久久久久久久 | 九九热精品在线 | 精品国产乱码久久久久久闺蜜 |