原创 【东芝TT_M3HQ开发板试用体验】+永远LED跑马灯

2019-9-8 15:33 1751 16 3 分类: MCU/ 嵌入式
LED跑马灯最为很经典实验,作为初学者的我来说,是对熟悉GPIO操作很重要一环。
在本实验中,我采用控制器的systick时钟计数器中断,实现1秒跳变LED跑马灯程序。 跑马灯实验室LED0~LED3灯每隔1S来回跳动。下载完成程序后,按S1按键RESET一下开发板即可启动程序。
本实验我使用软件开发环境是Keil MDK软件。如何配置软件清参详xld0932写的【东芝TT_M3HQ开发板试用体验】02.开箱测试和《【东芝TT_M3HQ开发板试用体验】03.新建工程 》帖子中。
其中我再重点强调一下, 为了CMSIS-DAP Debugger接口调试,我领取开发板时,J是将J6的短接,J5断开的;需要改变一下,将J6断开,J5短接后,电脑成功识别到了CMSIS-DAP Debugger。J5、J6跳线如下图所示位置。

至于Keil MDK软件配置、芯片的支持包和例程范例上文提到帖子中都有提供。
本文经过学习范例,本试验实在GPIO范例中修改完成。本人初学者一枚,水平有限,如有错误,望大家见谅。
由于博文无法上传附件,无法提供原工程程序。
下文只附上主程序mian.c内容和跑马灯实验视频。
  1. /**
  2. *******************************************************************************
  3. * @file main.c
  4. * @brief GPIO LED Sample Application.
  5. * @version V1.0.1.3
  6. * $Date:: 2018-09-21 11:31:35 #$
  7. *
  8. * DO NOT USE THIS SOFTWARE WITHOUT THE SOFTWARE LISENCE AGREEMENT.
  9. *
  10. * (C)Copyright TOSHIBA MICROELECTRONICS CORPORATION 2017 All rights reserved
  11. *******************************************************************************
  12. */
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /**
  17. * @addtogroup Sample_Appli
  18. * @{
  19. */
  20. /**
  21. * @addtogroup GPIO_LED
  22. * @{
  23. */
  24. /**
  25. * @defgroup MAIN_PRIVATE MAIN Private
  26. * @brief MAIN Private Group.
  27. * @{
  28. */
  29. /*------------------------------------------------------------------------------*/
  30. /* Includes */
  31. /*------------------------------------------------------------------------------*/
  32. #include "txz_sample_def.h"
  33. #include "bsp.h"
  34. #include "bsp_sw.h"
  35. #include "bsp_led.h"
  36. /*------------------------------------------------------------------------------*/
  37. /* Enumerated Type Definition */
  38. /*------------------------------------------------------------------------------*/
  39. /*------------------------------------------------------------------------------*/
  40. /* Structure Definition */
  41. /*------------------------------------------------------------------------------*/
  42. /*----------------------------------*/
  43. /**
  44. * @brief Instance Information.
  45. */
  46. /*----------------------------------*/
  47. typedef struct
  48. {
  49. sw_t sw[(uint32_t)BSP_PSW_MAX]; /*!< Application :Push SW */
  50. led_t led[(uint32_t)BSP_LED_MAX]; /*!< Application :LED */
  51. gpio_t gpio_obj; /*!< Application :GPIO. */
  52. } instance_t;
  53. /*------------------------------------------------------------------------------*/
  54. /* Private Member */
  55. /*------------------------------------------------------------------------------*/
  56. static instance_t instance; /*!< Instance. */
  57. uint32_t i = 5,t = 0;
  58. /*------------------------------------------------------------------------------*/
  59. /* Configuration */
  60. /*------------------------------------------------------------------------------*/
  61. #define MAIN_NULL ((void *)0) /*!< NULL. */
  62. /*------------------------------------------------------------------------------*/
  63. /* Private Function */
  64. /*------------------------------------------------------------------------------*/
  65. static TXZ_Result application_initialize(void);
  66. /*--------------------------------------------------*/
  67. /**
  68. * @brief Application Initialize.
  69. * @param -
  70. * @return Result.
  71. * @retval TXZ_SUCCESS :Success.
  72. * @retval TXZ_ERROR :Failure.
  73. * @note -
  74. */
  75. /*--------------------------------------------------*/
  76. static TXZ_Result application_initialize(void)
  77. {
  78. TXZ_Result result = TXZ_SUCCESS;
  79. /*----------------------*/
  80. /* LED */
  81. /*----------------------*/
  82. {
  83. uint32_t i;
  84. led_t *p_led = MAIN_NULL;
  85. for (i=0; i<(uint32_t)BSP_LED_MAX; i++)
  86. {
  87. p_led = &instance.led[i];
  88. p_led->init.id = (uint32_t)p_led;
  89. p_led->init.p_gpio = bsp_get_gpio_instance_address();
  90. p_led->init.port.group = bsp_get_gpio_group_led((BSPLed)(i));
  91. p_led->init.port.num = bsp_get_gpio_num_led((BSPLed)(i));
  92. p_led->init.blink.func = TXZ_DISABLE;
  93. p_led->init.blink.interval.on = 0;
  94. p_led->init.blink.interval.off = 0;
  95. p_led->init.state = LED_STATE_OFF;
  96. led_initialize(p_led);
  97. }
  98. }
  99. return (result);
  100. }
  101. /**
  102. * @}
  103. */ /* End of group MAIN_PRIVATE */
  104. /*------------------------------------------------------------------------------*/
  105. /* Public Function */
  106. /*------------------------------------------------------------------------------*/
  107. void irq_systick(void);
  108. /*--------------------------------------------------*/
  109. /**
  110. * @brief Main Function.
  111. * @param -
  112. * @retval -
  113. * @note -
  114. */
  115. /*--------------------------------------------------*/
  116. int main(void)
  117. {
  118. uint32_t period; // Period for SYSTICK
  119. /*----------------------*/
  120. /* BSP initialize */
  121. /*----------------------*/
  122. bsp_initialize();
  123. /*----------------------*/
  124. /* Initialize */
  125. /*----------------------*/
  126. /*--- application ---*/
  127. if (application_initialize() != TXZ_SUCCESS)
  128. {
  129. }
  130. /*----------------------*/
  131. /* Main Processing */
  132. /*----------------------*/
  133. /* Period for 10msec SYSTICK */
  134. SystemCoreClockUpdate();
  135. period = SystemCoreClock/5;
  136. if (SysTick_Config(period )) /* systick interrupt cycle setting */
  137. {
  138. }
  139. NVIC_EnableIRQ(SysTick_IRQn); /* systick interrupt enable */
  140. /* dummy loop */
  141. while (1){
  142. __NOP();
  143. }
  144. }
  145. /*--------------------------------------------------*/
  146. /**
  147. * @brief Systick IRQ.
  148. * @param -
  149. * @return -
  150. * @retval -
  151. * @note This function is called BSP.
  152. */
  153. /*--------------------------------------------------*/
  154. void irq_systick(void)
  155. {
  156. led_t *p_led0 = MAIN_NULL;
  157. led_t *p_led1 = MAIN_NULL;
  158. led_t *p_led2 = MAIN_NULL;
  159. led_t *p_led3 = MAIN_NULL;
  160. // gpio_pinstate_t val = GPIO_PIN_SET;
  161. p_led0 = &instance.led[0];
  162. p_led1 = &instance.led[1];
  163. p_led2 = &instance.led[2];
  164. p_led3 = &instance.led[3];
  165. if(i%20 == 5)
  166. {
  167. led_turn_on(p_led0);
  168. led_turn_off(p_led1);
  169. led_turn_off(p_led2);
  170. led_turn_off(p_led3);
  171. }
  172. if(i%20 == 10)
  173. {
  174. led_turn_on(p_led1);
  175. led_turn_off(p_led0);
  176. led_turn_off(p_led2);
  177. led_turn_off(p_led3);
  178. }
  179. if(i%20 == 15)
  180. {
  181. led_turn_on(p_led2);
  182. led_turn_off(p_led0);
  183. led_turn_off(p_led1);
  184. led_turn_off(p_led3);
  185. }
  186. if(i%20 == 0)
  187. {
  188. led_turn_on(p_led3);
  189. led_turn_off(p_led0);
  190. led_turn_off(p_led1);
  191. led_turn_off(p_led2);
  192. }
  193. i++;
  194. }
  195. #ifdef DEBUG
  196. /*--------------------------------------------------*/
  197. /**
  198. * @brief Failure Assert.
  199. * @note for debug
  200. */
  201. /*--------------------------------------------------*/
  202. void assert_failed(char *file, int32_t line)
  203. {
  204. while (1) {
  205. __nop();
  206. }
  207. }
  208. #endif
  209. /**
  210. * @}
  211. */ /* End of group GPIO_LED */
  212. /**
  213. * @}
  214. */ /* End of group Sample_Appli */
  215. #ifdef __cplusplus
  216. }
  217. #endif /* __cplusplus */

跑马灯视频

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

abner_ma 2020-8-26 19:47

写的不错,赞
相关推荐阅读
shenwen2007_656583087 2024-12-17 00:59
【富芮坤FR3068x-C】+开发环境疑问
【富芮坤FR3068x-C】+开发环境疑问非常荣欣参加了这次《富芮坤FR3068x-C》评测活动,在搭建开发环境时,本人就遇到很大问题,主要有3个。第1个问题:本人按照《FR306x开发环境说明书》中...
shenwen2007_656583087 2024-11-17 11:58
《从算法到电路:数字芯片算法的电路实现》+心得体验
非常荣欣参加了这次《从算法到电路:数字芯片算法的电路实现》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面和反面。1、本书内容简介这是一本深入解读基础...
shenwen2007_656583087 2024-08-06 00:50
机智云Gokit2.0开发板+体验之路
非常荣欣参加了这次《混合式数字与全数字电源控制实战》试读体验活动,同时非常感谢面包板论坛举办此活动。打开包装后,一块精美小巧的板子——GoKit2开发板。图 1 GoKit2开发板1、IOE Demo...
shenwen2007_656583087 2024-07-21 19:43
《混合式数字与全数字电源控制实战》+MPLAB仿真体验
非常荣欣参加了这次《混合式数字与全数字电源控制实战》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面。本书专注于补偿控制器理论与计算并实现完整控制环路...
shenwen2007_656583087 2024-07-13 12:53
《运放电路环路稳定性设计》+心得体会
非常荣欣参加了这次《运放电路环路稳定性设计》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面。 本书利用“原理分析、仿真计算、样机测试”三步学习法对...
shenwen2007_656583087 2024-04-17 01:33
《码上行动:用ChatGPT学会Python编程》+心得体会
非常荣欣参加了这次《码上行动:用ChatGPT学会Python编程》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面。 本书的内容从零基础开始,由浅...
EE直播间
更多
我要评论
1
16
关闭 站长推荐上一条 /1 下一条