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

2019-9-8 15:33 1802 17 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内容和跑马灯实验视频。
/**
  • *******************************************************************************
  • * @file main.c
  • * @brief GPIO LED Sample Application.
  • * @version V1.0.1.3
  • * $Date:: 2018-09-21 11:31:35 #$
  • *
  • * DO NOT USE THIS SOFTWARE WITHOUT THE SOFTWARE LISENCE AGREEMENT.
  • *
  • * (C)Copyright TOSHIBA MICROELECTRONICS CORPORATION 2017 All rights reserved
  • *******************************************************************************
  • */
  • #ifdef __cplusplus
  • extern "C" {
  • #endif
  • /**
  • * @addtogroup Sample_Appli
  • * @{
  • */
  • /**
  • * @addtogroup GPIO_LED
  • * @{
  • */
  • /**
  • * @defgroup MAIN_PRIVATE MAIN Private
  • * @brief MAIN Private Group.
  • * @{
  • */
  • /*------------------------------------------------------------------------------*/
  • /* Includes */
  • /*------------------------------------------------------------------------------*/
  • #include "txz_sample_def.h"
  • #include "bsp.h"
  • #include "bsp_sw.h"
  • #include "bsp_led.h"
  • /*------------------------------------------------------------------------------*/
  • /* Enumerated Type Definition */
  • /*------------------------------------------------------------------------------*/
  • /*------------------------------------------------------------------------------*/
  • /* Structure Definition */
  • /*------------------------------------------------------------------------------*/
  • /*----------------------------------*/
  • /**
  • * @brief Instance Information.
  • */
  • /*----------------------------------*/
  • typedef struct
  • {
  • sw_t sw[(uint32_t)BSP_PSW_MAX]; /*!< Application :Push SW */
  • led_t led[(uint32_t)BSP_LED_MAX]; /*!< Application :LED */
  • gpio_t gpio_obj; /*!< Application :GPIO. */
  • } instance_t;
  • /*------------------------------------------------------------------------------*/
  • /* Private Member */
  • /*------------------------------------------------------------------------------*/
  • static instance_t instance; /*!< Instance. */
  • uint32_t i = 5,t = 0;
  • /*------------------------------------------------------------------------------*/
  • /* Configuration */
  • /*------------------------------------------------------------------------------*/
  • #define MAIN_NULL ((void *)0) /*!< NULL. */
  • /*------------------------------------------------------------------------------*/
  • /* Private Function */
  • /*------------------------------------------------------------------------------*/
  • static TXZ_Result application_initialize(void);
  • /*--------------------------------------------------*/
  • /**
  • * @brief Application Initialize.
  • * @param -
  • * @return Result.
  • * @retval TXZ_SUCCESS :Success.
  • * @retval TXZ_ERROR :Failure.
  • * @note -
  • */
  • /*--------------------------------------------------*/
  • static TXZ_Result application_initialize(void)
  • {
  • TXZ_Result result = TXZ_SUCCESS;
  • /*----------------------*/
  • /* LED */
  • /*----------------------*/
  • {
  • uint32_t i;
  • led_t *p_led = MAIN_NULL;
  • for (i=0; i<(uint32_t)BSP_LED_MAX; i++)
  • {
  • p_led = &instance.led[i];
  • p_led->init.id = (uint32_t)p_led;
  • p_led->init.p_gpio = bsp_get_gpio_instance_address();
  • p_led->init.port.group = bsp_get_gpio_group_led((BSPLed)(i));
  • p_led->init.port.num = bsp_get_gpio_num_led((BSPLed)(i));
  • p_led->init.blink.func = TXZ_DISABLE;
  • p_led->init.blink.interval.on = 0;
  • p_led->init.blink.interval.off = 0;
  • p_led->init.state = LED_STATE_OFF;
  • led_initialize(p_led);
  • }
  • }
  • return (result);
  • }
  • /**
  • * @}
  • */ /* End of group MAIN_PRIVATE */
  • /*------------------------------------------------------------------------------*/
  • /* Public Function */
  • /*------------------------------------------------------------------------------*/
  • void irq_systick(void);
  • /*--------------------------------------------------*/
  • /**
  • * @brief Main Function.
  • * @param -
  • * @retval -
  • * @note -
  • */
  • /*--------------------------------------------------*/
  • int main(void)
  • {
  • uint32_t period; // Period for SYSTICK
  • /*----------------------*/
  • /* BSP initialize */
  • /*----------------------*/
  • bsp_initialize();
  • /*----------------------*/
  • /* Initialize */
  • /*----------------------*/
  • /*--- application ---*/
  • if (application_initialize() != TXZ_SUCCESS)
  • {
  • }
  • /*----------------------*/
  • /* Main Processing */
  • /*----------------------*/
  • /* Period for 10msec SYSTICK */
  • SystemCoreClockUpdate();
  • period = SystemCoreClock/5;
  • if (SysTick_Config(period )) /* systick interrupt cycle setting */
  • {
  • }
  • NVIC_EnableIRQ(SysTick_IRQn); /* systick interrupt enable */
  • /* dummy loop */
  • while (1){
  • __NOP();
  • }
  • }
  • /*--------------------------------------------------*/
  • /**
  • * @brief Systick IRQ.
  • * @param -
  • * @return -
  • * @retval -
  • * @note This function is called BSP.
  • */
  • /*--------------------------------------------------*/
  • void irq_systick(void)
  • {
  • led_t *p_led0 = MAIN_NULL;
  • led_t *p_led1 = MAIN_NULL;
  • led_t *p_led2 = MAIN_NULL;
  • led_t *p_led3 = MAIN_NULL;
  • // gpio_pinstate_t val = GPIO_PIN_SET;
  • p_led0 = &instance.led[0];
  • p_led1 = &instance.led[1];
  • p_led2 = &instance.led[2];
  • p_led3 = &instance.led[3];
  • if(i%20 == 5)
  • {
  • led_turn_on(p_led0);
  • led_turn_off(p_led1);
  • led_turn_off(p_led2);
  • led_turn_off(p_led3);
  • }
  • if(i%20 == 10)
  • {
  • led_turn_on(p_led1);
  • led_turn_off(p_led0);
  • led_turn_off(p_led2);
  • led_turn_off(p_led3);
  • }
  • if(i%20 == 15)
  • {
  • led_turn_on(p_led2);
  • led_turn_off(p_led0);
  • led_turn_off(p_led1);
  • led_turn_off(p_led3);
  • }
  • if(i%20 == 0)
  • {
  • led_turn_on(p_led3);
  • led_turn_off(p_led0);
  • led_turn_off(p_led1);
  • led_turn_off(p_led2);
  • }
  • i++;
  • }
  • #ifdef DEBUG
  • /*--------------------------------------------------*/
  • /**
  • * @brief Failure Assert.
  • * @note for debug
  • */
  • /*--------------------------------------------------*/
  • void assert_failed(char *file, int32_t line)
  • {
  • while (1) {
  • __nop();
  • }
  • }
  • #endif
  • /**
  • * @}
  • */ /* End of group GPIO_LED */
  • /**
  • * @}
  • */ /* End of group Sample_Appli */
  • #ifdef __cplusplus
  • }
  • #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编程》试读体验活动,同时非常感谢面包板论坛举办此活动。本书印刷还是非常新颖,具有精美漫画。下图为图书正面。 本书的内容从零基础开始,由浅...
    我要评论
    1
    17
    关闭 站长推荐上一条 /4 下一条