标题: STM8S-LCD-按键查询-按键中断源码 [打印本页]

作者: liuxin549521    时间: 2018-1-3 09:28
标题: STM8S-LCD-按键查询-按键中断源码
STM8S-LCD-按键查询-按键中断全部资料51hei下载地址:
STM8S_查询按键.zip (272.23 KB, 下载次数: 26)
STM8S_按键中断.zip (263.23 KB, 下载次数: 24)
STM8S_LCD.zip (260.86 KB, 下载次数: 19)


单片机源程序如下:
  1. /* Includes ------------------------------------------------------------------*/
  2. #include "stm8s.h"
  3. #include "sysclock.h"


  4. /* Private defines -----------------------------------------------------------*/
  5. /* LED 端口定义 */
  6. #define LED_PORT        GPIOA       
  7. #define KEY_PORT        GPIOD
  8. #define KEY_EXTI_PORT   EXTI_PORT_GPIOD

  9. #define LED_1       GPIO_PIN_3
  10. #define LED_2       GPIO_PIN_4
  11. #define LED_3       GPIO_PIN_5
  12. #define LED_4       GPIO_PIN_6

  13. #define KEY_1       GPIO_PIN_0
  14. #define KEY_2       GPIO_PIN_5
  15. #define KEY_3       GPIO_PIN_6
  16. #define KEY_4       GPIO_PIN_7

  17. #define ON  0                /* 定义LED灯亮 -- 低电平*/
  18. #define OFF 1                /* 定义LED灯灭 -- 高电平*/
  19. /* Private function prototypes -----------------------------------------------*/
  20. /* Private functions ---------------------------------------------------------*/

  21. /*******************************************************************************
  22. * 名称: Delay
  23. * 功能: 简单的延时函数
  24. * 形参: nCount -> 延时时间数
  25. * 返回: 无
  26. * 说明: 无
  27. ******************************************************************************/
  28. void Delay(u32 nCount)
  29. {
  30.         u32 i;
  31.         for(i=0;i<nCount;i++);      
  32. }


  33. /*******************************************************************************
  34. * 名称: LED_Init
  35. * 功能: LED外设GPIO引脚初始化操作
  36. * 形参: 无
  37. * 返回: 无
  38. * 说明: 无
  39. ******************************************************************************/
  40. void LED_Init(void)
  41. {      
  42.         //定义LED的管脚为输出模式
  43.         GPIO_Init(LED_PORT, LED_1, GPIO_MODE_OUT_PP_HIGH_FAST );
  44.         GPIO_Init(LED_PORT, LED_2, GPIO_MODE_OUT_PP_HIGH_FAST );
  45.         GPIO_Init(LED_PORT, LED_3, GPIO_MODE_OUT_PP_HIGH_FAST );       
  46.         GPIO_Init(LED_PORT, LED_4, GPIO_MODE_OUT_PP_HIGH_FAST );       
  47. }

  48. /*******************************************************************************
  49. * 名称: LED_Operation
  50. * 功能: LED 灯亮灭设置操作
  51. * 形参: led -> 要操作的led灯
  52. *                  state -> 亮还是灭
  53. * 返回: 无
  54. * 说明: 无
  55. ******************************************************************************/
  56. void LED_Config(GPIO_Pin_TypeDef led, u8 state)
  57. {
  58.     if(ON == state)
  59.     {
  60.         GPIO_WriteLow(LED_PORT, led);
  61.     }
  62.     else
  63.     {
  64.         GPIO_WriteHigh(LED_PORT, led);
  65.     }
  66. }


  67. /*******************************************************************************
  68. * 名称: LED_Show
  69. * 功能: 现流水灯
  70. * 形参: 无
  71. * 返回: 无
  72. * 说明: 无
  73. ******************************************************************************/
  74. void LED_Show(void)
  75. {
  76.     LED_Config(LED_1, ON);
  77.     LED_Config(LED_2, OFF);
  78.     LED_Config(LED_3, OFF);
  79.     LED_Config(LED_4, OFF);
  80.     Delay(0x1ffff);
  81.     LED_Config(LED_1, OFF);
  82.     LED_Config(LED_2, ON);
  83.     LED_Config(LED_3, OFF);
  84.     LED_Config(LED_4, OFF);
  85.     Delay(0x1ffff);
  86.     LED_Config(LED_1, OFF);
  87.     LED_Config(LED_2, OFF);
  88.     LED_Config(LED_3, ON);
  89.     LED_Config(LED_4, OFF);
  90.     Delay(0x1ffff);
  91.     LED_Config(LED_1, OFF);
  92.     LED_Config(LED_2, OFF);
  93.     LED_Config(LED_3, OFF);
  94.     LED_Config(LED_4, ON);
  95.     Delay(0x1ffff);
  96.    
  97. }


  98. /*******************************************************************************
  99. * 名称: Key_Exti_Init
  100. * 功能: 按键外设引脚初始化操作
  101. * 形参: 无
  102. * 返回: 无
  103. * 说明: 无
  104. ******************************************************************************/
  105. void Key_Exti_Init(void)
  106. {
  107.           /* 与按键相连的引脚设置为输入模式 */
  108.     GPIO_Init(KEY_PORT, KEY_1, GPIO_MODE_IN_PU_IT);
  109.        
  110.         /* 将KEY_PORT端口设置为下降沿触发中断--因为按键按下时产生一个低电平 */
  111.     EXTI_SetExtIntSensitivity(KEY_EXTI_PORT, EXTI_SENSITIVITY_FALL_ONLY);
  112.    


  113. }

  114. int main(void)
  115. {
  116.   
  117.   /* 系统时钟初始化 */
  118.   SystemClock_Init();
  119.   
  120.   Key_Exti_Init();        /* 外部中断初始化 */
  121.   
  122.   enableInterrupts();         /* 开启总中断 */
  123.   LED_Init();
  124.   while (1)
  125.   {
  126.     /*放置你的代码*/
  127. //   LED_Show();
  128.   }
  129.   
  130. }

  131. #ifdef USE_FULL_ASSERT

  132. /**
  133.   * @brief  Reports the name of the source file and the source line number
  134.   *   where the assert_param error has occurred.
  135.   * @param file: pointer to the source file name
  136.   * @param line: assert_param error line source number
  137.   * @retval : None
  138.   */
  139. void assert_failed(u8* file, u32 line)
  140. {
  141.   /* User can add his own implementation to report the file name and line number,
  142.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  143.   /* Infinite loop */
  144.   while (1)
  145.   {
  146.   }
  147. }
  148. #endif


复制代码







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1