• STM32_project:led_beep


    代码: 

    主要部分

    1. #include "stm32f10x.h" // Device header
    2. #include "delay.h"
    3. // 给蜂鸣器IO口输出低电平,响,高,不向。
    4. //int main (void)
    5. //{
    6. // // 开启时钟
    7. // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // rcc外设时钟控制的APB2外设接口, 第一个参数选择点亮那个口,第二个参数使能或者失能
    8. // // 初始化gpioA的PIN0
    9. // GPIO_InitTypeDef GPIO_InitStruct;
    10. // //GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
    11. // GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD ; // 开漏输出,高电平没有驱动能力
    12. // GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
    13. // GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    14. // GPIO_Init(GPIOA, &GPIO_InitStruct); // 用结构体初始化gpio口
    15. //
    16. GPIO_SetBits(GPIOA, GPIO_Pin_0);
    17. GPIO_ResetBits(GPIOA, GPIO_Pin_0);
    18. GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); // Bit_RESET
    19. GPIO_Write;
    20. // const int delay_time = 100; // 用来定义常量,有作用域的限制。具有类型检查。
    21. // // const 定义的常量在程序运行时会分配内存,并且具有类型信息不是简单的文本替换。
    22. // while(1)
    23. // {
    24. // GPIO_ResetBits(GPIOA, GPIO_Pin_0);
    25. // Delay_ms(delay_time);
    26. // GPIO_SetBits(GPIOA, GPIO_Pin_0);
    27. // Delay_ms(delay_time);
    28. // GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);
    29. // Delay_ms(delay_time);
    30. // GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);
    31. // Delay_ms(delay_time);
    32. //
    33. // GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)0); // Bit_RESET 强制类型转换
    34. // Delay_ms(delay_time);
    35. // GPIO_WriteBit(GPIOA, GPIO_Pin_0, (BitAction)(1)); // Bit_RESET
    36. // Delay_ms(delay_time);
    37. // }
    38. //}
    39. // 常量定义
    40. const int delay_time = 100; // 用来定义常量,有作用域的限制。具有类型检查。
    41. // const 定义的常量在程序运行时会分配内存,并且具有类型信息不是简单的文本替换。
    42. // 函数声明
    43. void liushui(void);
    44. void liushui1(void);
    45. void beep(void);
    46. void led_1(void);
    47. int main (void)
    48. {
    49. // 开启时钟
    50. // 可以通过按位或,选择多个引脚。
    51. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); // rcc外设时钟控制的APB2外设接口, 第一个参数选择点亮那个口,第二个参数使能或者失能
    52. // 初始化gpioA的PIN0
    53. GPIO_InitTypeDef GPIO_InitStruct_A;
    54. GPIO_InitStruct_A.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
    55. //GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD ; // 开漏输出,高电平没有驱动能力
    56. GPIO_InitStruct_A.GPIO_Pin = GPIO_Pin_All; // PIN0 ~ PIN15 选中所有引脚。
    57. GPIO_InitStruct_A.GPIO_Speed = GPIO_Speed_50MHz;
    58. GPIO_Init(GPIOA, &GPIO_InitStruct_A); // 用结构体初始化gpio口
    59. // 初始化gpioB的PIN口
    60. GPIO_InitTypeDef GPIO_InitStruct_B;
    61. GPIO_InitStruct_B.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
    62. GPIO_InitStruct_B.GPIO_Pin = GPIO_Pin_All; // PIN0 ~ PIN15 选中所有引脚。
    63. GPIO_InitStruct_B.GPIO_Speed = GPIO_Speed_50MHz;
    64. GPIO_Init(GPIOB, &GPIO_InitStruct_B); // 用结构体初始化gpio口
    65. // GPIO_SetBits(GPIOA, GPIO_Pin_0);
    66. // GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 可以同时设置多个引脚
    67. // GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET); // Bit_RESET
    68. // GPIO_Write;
    69. while(1)
    70. {
    71. liushui();
    72. beep() ;
    73. liushui1();
    74. beep() ;
    75. led_1();
    76. }
    77. }
    78. void led_1()
    79. {
    80. int led1 [4] = {0x0081, 0x0042, 0x0024, 0x0018};
    81. int i;
    82. for(i=0; i <=3 ; i++)
    83. {
    84. GPIO_Write(GPIOA, ~led1[i]);
    85. Delay_ms(delay_time);
    86. }
    87. beep();
    88. for(i=3; i >= 0 ; i--)
    89. {
    90. GPIO_Write(GPIOA, ~led1[i]);
    91. Delay_ms(delay_time);
    92. }
    93. beep();
    94. }
    95. void beep()
    96. {
    97. GPIO_ResetBits(GPIOB, GPIO_Pin_12); //
    98. Delay_ms(delay_time);
    99. GPIO_SetBits(GPIOB, GPIO_Pin_12);
    100. Delay_ms(delay_time);
    101. GPIO_ResetBits(GPIOB, GPIO_Pin_12); //
    102. Delay_ms(delay_time);
    103. GPIO_SetBits(GPIOB, GPIO_Pin_12);
    104. }
    105. void liushui()
    106. {
    107. GPIO_Write(GPIOA, ~0x0001);
    108. Delay_ms(delay_time);
    109. GPIO_Write(GPIOA, ~0x0002);
    110. Delay_ms(delay_time);
    111. GPIO_Write(GPIOA, ~0x0004);
    112. Delay_ms(delay_time);
    113. GPIO_Write(GPIOA, ~0x0008);
    114. Delay_ms(delay_time);
    115. GPIO_Write(GPIOA, ~0x0010);
    116. Delay_ms(delay_time);
    117. GPIO_Write(GPIOA, ~0x0020);
    118. Delay_ms(delay_time);
    119. GPIO_Write(GPIOA, ~0x0040);
    120. Delay_ms(delay_time);
    121. GPIO_Write(GPIOA, ~0x0080);
    122. Delay_ms(delay_time);
    123. }
    124. void liushui1()
    125. {
    126. GPIO_Write(GPIOA, ~0x0080);
    127. Delay_ms(delay_time);
    128. GPIO_Write(GPIOA, ~0x0040);
    129. Delay_ms(delay_time);
    130. GPIO_Write(GPIOA, ~0x0020);
    131. Delay_ms(delay_time);
    132. GPIO_Write(GPIOA, ~0x0010);
    133. Delay_ms(delay_time);
    134. GPIO_Write(GPIOA, ~0x0008);
    135. Delay_ms(delay_time);
    136. GPIO_Write(GPIOA, ~0x0004);
    137. Delay_ms(delay_time);
    138. GPIO_Write(GPIOA, ~0x0002);
    139. Delay_ms(delay_time);
    140. GPIO_Write(GPIOA, ~0x0001);
    141. Delay_ms(delay_time);
    142. }

  • 相关阅读:
    WPF实现轮播图(图片、视屏)
    k8s笔记 | StatefulSet 有状态
    SQL中for xml path 的用法
    基于 idea 将 springboot 应用部署到 docker环境
    MySQL到底有没有解决幻读问题?这篇文章彻底给你解答
    【BLE】蓝牙数据速率
    第一个python&selenium自动化测试实战项目
    动态路由协议OSPF项目部署(二)
    Dockerfile构建镜像与实战
    k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?
  • 原文地址:https://blog.csdn.net/Meng_long2022/article/details/134256208