当前位置:   article > 正文

STM32F407VET6开发 | 学习笔记Day2_stm32f407vet6中文数据手册

stm32f407vet6中文数据手册

目录

一、LED灯

1.原理图

2.添加库文件

3.代码部分

二、蜂鸣器

1.基本概述

2.原理图

3.代码部分

三、按键

1.原理图

2.代码部分

四、系统时钟

1.时钟源和锁相环

2.原理图

3.滴答定时器(SysTick)

3.1原理图

3.2代码部分(ms与us定时器)


一、LED灯

1.原理图

2.添加库文件

3.代码部分

led.h

  1. #ifndef __LED_H__
  2. #define __LED_H__
  3. #include "stm32f4xx.h" // Device header
  4. void LED_init(void); //初始化
  5. void LED1_on(void); //打开LED1
  6. void LED1_off(void); //关闭LED1
  7. void LED2_on(void); //打开LED2
  8. void LED2_off(void); //关闭LED2
  9. void LED3_on(void); //关闭LED3
  10. void LED3_off(void); //关闭LED3
  11. #endif

led.c

  1. #include "led.h"
  2. /*********************************************
  3. *功能:初始化LED灯
  4. *参数:无
  5. *返回值:无
  6. *其他:
  7. *根据原理图
  8. * LED1 ---- PE8
  9. * LED1 ---- PE9
  10. * LED1 ---- PE10
  11. * 高电平灭,低电平亮
  12. ***********************************************/
  13. void LED_init(void)
  14. {
  15. /*********1.开启时钟******************************/
  16. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
  17. /*********2.初始化GPIO相关引脚*********************/
  18. GPIO_InitTypeDef GPIO_InitStruct;
  19. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //模式:输出模式
  20. GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //输出:推挽
  21. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10; //引脚:8、9、10
  22. GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上下拉:上拉
  23. GPIO_Init(GPIOE,&GPIO_InitStruct);
  24. /*********3.初始化引脚状态*********************/
  25. GPIO_SetBits(GPIOE,GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10); //引脚给高电平,默认灭灯
  26. }
  27. /*********************************************
  28. *功能:开LED1灯
  29. *参数:无
  30. *返回值:无
  31. *其他:
  32. *根据原理图
  33. * LED1 ---- PE8
  34. * LED1 ---- PE9
  35. * LED1 ---- PE10
  36. * 高电平灭,低电平亮
  37. ***********************************************/
  38. void LED1_on(void)
  39. {
  40. GPIO_ResetBits(GPIOE,GPIO_Pin_8); //引脚给低电平,亮灯
  41. }
  42. /*********************************************
  43. *功能:关LED1灯
  44. *参数:无
  45. *返回值:无
  46. *其他:
  47. *根据原理图
  48. * LED1 ---- PE8
  49. * LED1 ---- PE9
  50. * LED1 ---- PE10
  51. * 高电平灭,低电平亮
  52. ***********************************************/
  53. void LED1_off(void)
  54. {
  55. GPIO_SetBits(GPIOE,GPIO_Pin_8); //引脚给高电平,灭灯
  56. }
  57. /*********************************************
  58. *功能:开LED2灯
  59. *参数:无
  60. *返回值:无
  61. *其他:
  62. *根据原理图
  63. * LED1 ---- PE8
  64. * LED1 ---- PE9
  65. * LED1 ---- PE10
  66. * 高电平灭,低电平亮
  67. ***********************************************/
  68. void LED2_on(void)
  69. {
  70. GPIO_ResetBits(GPIOE,GPIO_Pin_9); //引脚给低电平,亮灯
  71. }
  72. /*********************************************
  73. *功能:关LED2灯
  74. *参数:无
  75. *返回值:无
  76. *其他:
  77. *根据原理图
  78. * LED1 ---- PE8
  79. * LED1 ---- PE9
  80. * LED1 ---- PE10
  81. * 高电平灭,低电平亮
  82. ***********************************************/
  83. void LED2_off(void)
  84. {
  85. GPIO_SetBits(GPIOE,GPIO_Pin_9); //引脚给低电平,亮灯
  86. }
  87. /*********************************************
  88. *功能:开LED3灯
  89. *参数:无
  90. *返回值:无
  91. *其他:
  92. *根据原理图
  93. * LED1 ---- PE8
  94. * LED1 ---- PE9
  95. * LED1 ---- PE10
  96. * 高电平灭,低电平亮
  97. ***********************************************/
  98. void LED3_on(void)
  99. {
  100. GPIO_ResetBits(GPIOE,GPIO_Pin_10); //引脚给低电平,亮灯
  101. }
  102. /*********************************************
  103. *功能:关LED3灯
  104. *参数:无
  105. *返回值:无
  106. *其他:
  107. *根据原理图
  108. * LED1 ---- PE8
  109. * LED1 ---- PE9
  110. * LED1 ---- PE10
  111. * 高电平灭,低电平亮
  112. ***********************************************/
  113. void LED3_off(void)
  114. {
  115. GPIO_SetBits(GPIOE,GPIO_Pin_10); //引脚给低电平,亮灯
  116. }

二、蜂鸣器

1.基本概述

蜂鸣器:分为有源和无源,有源给电就能用,无源需要自己配置信号源。

三极管:分为基极(Base)、发射极(Emitter)和集电极(Collecor) ,作用是小电流控制大电流,放大信号。

2.原理图

3.代码部分

beep.h

  1. #ifndef __BEEP_H__
  2. #define __BEEP_H__
  3. #include "stm32f4xx.h" // Device header
  4. void BEEP_init(void); //初始化蜂鸣器
  5. void BEEP_on(void); //开启蜂鸣器
  6. void BEEP_off(void); //关闭蜂鸣器
  7. #endif

beep.c

  1. #include "beep.h"
  2. /*********************************************
  3. *功能:初始化BEEP蜂鸣器
  4. *参数:无
  5. *返回值:无
  6. *其他:
  7. * 根据原理图
  8. * BEEP ---- PB10
  9. * 高电平响,低电平不响
  10. ***********************************************/
  11. void BEEP_init(void)
  12. {
  13. /**********1.使能GPIOB 外设时钟 ********************/
  14. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
  15. /**********2.初始化GPIO相关引脚**********************/
  16. GPIO_InitTypeDef GPIO_InitStruct;
  17. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //模式:输出
  18. GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //输出:推挽
  19. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; //引脚:10
  20. GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上下拉:上拉
  21. GPIO_Init(GPIOB,&GPIO_InitStruct);
  22. /************************END*************************/
  23. /***************3.设置默认电平(不响)***************/
  24. GPIO_ResetBits(GPIOB,GPIO_Pin_10);
  25. }
  26. /*********************************************
  27. *功能:打开BEEP蜂鸣器
  28. *参数:无
  29. *返回值:无
  30. *其他:
  31. * 根据原理图
  32. * BEEP ---- PB10
  33. * 高电平响,低电平不响
  34. ***********************************************/
  35. void BEEP_on(void)
  36. {
  37. GPIO_SetBits(GPIOB,GPIO_Pin_10); //高电平响
  38. }
  39. /*********************************************
  40. *功能:关闭BEEP蜂鸣器
  41. *参数:无
  42. *返回值:无
  43. *其他:
  44. * 根据原理图
  45. * BEEP ---- PB10
  46. * 高电平响,低电平不响
  47. ***********************************************/
  48. void BEEP_off(void)
  49. {
  50. GPIO_ResetBits(GPIOB,GPIO_Pin_10); //低电平不响
  51. }

三、按键

1.原理图

2.代码部分

key.h

  1. #ifndef __KEY_H__
  2. #define __KEY_H__
  3. #include "stm32f4xx.h" // Device header
  4. void KEY_Init(void); //初始化KEY按键
  5. u8 KEY_Scan(void); //扫描按键获取键值
  6. #endif

key.c

  1. #include "key.h"
  2. /*********************************************
  3. *功能:初始化KEY按键
  4. *参数:无
  5. *返回值:无
  6. *其他:
  7. * 原理图
  8. * KEY1 ---- PE4
  9. * KEY2 ---- PE5
  10. * KEY3 ---- PE6
  11. * KEY4 ---- PC13
  12. ***********************************************/
  13. void KEY_Init(void)
  14. {
  15. /*******1.使能外设时钟***************/
  16. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOE,ENABLE);
  17. /*******2.初始化GPIO引脚*************/
  18. GPIO_InitTypeDef GPIO_InitStruct;
  19. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; //模式:输入
  20. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //引脚: 13
  21. GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上下拉: 上拉
  22. GPIO_Init(GPIOC, &GPIO_InitStruct);
  23. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6; //引脚: 4、5、6
  24. GPIO_Init(GPIOE, &GPIO_InitStruct);
  25. }
  26. /*********************************************
  27. *功能:扫描按键
  28. *参数:无
  29. *返回值:KEY1返回1,KEY2返回2,KEY3返回3,KEY4返回4,无按键返回0
  30. *其他:
  31. * 原理图
  32. * KEY1 ---- PE4
  33. * KEY2 ---- PE5
  34. * KEY3 ---- PE6
  35. * KEY4 ---- PC13
  36. ***********************************************/
  37. #define KEY1 GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)
  38. #define KEY2 GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_5)
  39. #define KEY3 GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_6)
  40. #define KEY4 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)
  41. extern void delay_ms();
  42. u8 KEY_Scan(void)
  43. {
  44. static u8 flag = 1; //无键按下标志位为1
  45. if( (!KEY1 || !KEY2 || !KEY3 || !KEY4) && (flag == 1))
  46. {
  47. flag = 0;
  48. delay_ms(5); //消抖
  49. if(!KEY1) return 1;
  50. if(!KEY2) return 2;
  51. if(!KEY3) return 3;
  52. if(!KEY4) return 4;
  53. }
  54. if( KEY1 && KEY2 && KEY3 && KEY4)
  55. {
  56. flag = 1;
  57. }
  58. return 0;
  59. }

main.c

  1. #include "stm32f4xx.h" // Device header
  2. #include "key.h"
  3. #include "led.h"
  4. #include "beep.h"
  5. /*********************************************
  6. *功能:粗略毫秒定时
  7. *参数:
  8. * ms:毫秒()
  9. *返回值:无
  10. *其他:无
  11. ***********************************************/
  12. void delay_ms(uint32_t ms)
  13. {
  14. for(uint32_t i=0 ; i < (ms * 10000) ;i++)
  15. {
  16. __NOP();
  17. }
  18. }
  19. int main()
  20. {
  21. /*************1.调用初始化函数*******************/
  22. KEY_Init();
  23. LED_init();
  24. BEEP_init();
  25. /**************2.定义相关变量********************/
  26. u8 key;
  27. /**************3.进入操作************************/
  28. while(1)
  29. {
  30. key = KEY_Scan(); //获取键值
  31. switch(key)
  32. {
  33. case 1 :
  34. GPIO_ToggleBits(GPIOE, GPIO_Pin_8); //LED1位反转
  35. break;
  36. case 2 :
  37. GPIO_ToggleBits(GPIOE, GPIO_Pin_9); //LED2位反转
  38. break;
  39. case 3 :
  40. GPIO_ToggleBits(GPIOE, GPIO_Pin_10); //LED3位反转
  41. break;
  42. case 4 :
  43. GPIO_ToggleBits(GPIOC, GPIO_Pin_13); //LED4位反转
  44. break;
  45. }
  46. }
  47. }

四、系统时钟

1.时钟源和锁相环

LSI: 低速内部时钟

LSE:低速外部时钟

HSI: 高速内部时钟

HSE:高速外部时钟

PLL: 锁相环

2.原理图

3.滴答定时器(SysTick)
3.1原理图

3.2代码部分(ms与us定时器)

systick.h

  1. #ifndef __SYSTICK_H__
  2. #define __SYSTICK_H__
  3. #include "stm32f4xx.h" // Device header
  4. void systick_Init(u8 SYSTICK); //初始化滴答定时器
  5. void delay_us(u32 us); //微秒定时器
  6. void delay_ms(u32 ms); //毫秒定时器
  7. #endif

systick.c

  1. #include "systick.h"
  2. u32 _us;
  3. /**************************************
  4. 功能:初始化滴答定时器
  5. 参数:
  6. @SYSTICK:时钟频率
  7. 返回值:无
  8. 其他:
  9. ****************************************/
  10. void systick_Init(u8 SYSTICK)
  11. {
  12. //配置时钟为八分频
  13. SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
  14. //一微秒跳动次数
  15. _us = SYSTICK / 8; // 168/8 = 21
  16. }
  17. /**************************************
  18. 功能:微秒定时器
  19. 参数:
  20. @us:微秒
  21. 返回值:无
  22. 其他:
  23. ****************************************/
  24. void delay_us(u32 us)
  25. {
  26. SysTick->VAL = 0; //初始化当前计数值
  27. SysTick->LOAD = us * _us; //装载计数
  28. SysTick->CTRL |= 0x1; //使能嘀嗒时钟
  29. while( !((SysTick->CTRL >> 16) & 0x1) )
  30. {
  31. }
  32. SysTick->VAL = 0; //重置计数值
  33. SysTick->CTRL &= ~(0x1); //关闭嘀嗒时钟
  34. }
  35. /**************************************
  36. 功能:毫秒定时器
  37. 参数:
  38. @ms:毫秒
  39. 返回值:无
  40. 其他:
  41. ****************************************/
  42. void delay_ms(u32 ms)
  43. {
  44. while(ms--)
  45. {
  46. delay_us(1000);
  47. }
  48. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/713369
推荐阅读
  

闽ICP备14008679号