打印
[活动专区]

【AT-START-F423测评】 + AT32_Work_Bench配置点亮LED

[复制链接]
1940|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
袁胜富|  楼主 | 2023-10-21 16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 袁胜富 于 2023-10-21 17:13 编辑

一、概述


       首先感谢雅特力和21IC共同举办了此次活动。
       雅特力新的MCU AT32F423是一款不错的芯片,资源相当丰富,性价比极高。
       每当拿到新的开发板,首先得要做一灯大师,点亮一颗灯开始。故发表此篇文章,以AT32 Work Bench为外设配置工具。

二、原理



     从原理图来看,LED2,LED3,LED4连接MCU的PD13,PD14,PD15,低电平点亮。
      


三、AT32_Work_Bench配置



       1.新建工程。
          第一步:找到AT32_Work_Bench;
          第二步:按照下图配置;
          第二步:新建;
        

       2.配置外部时钟。
      

       3.配置LED引脚,按照下图配置就行。
        第一步:将PD13,PD14,PD15设置为输出模式;
        第二步:设置引脚初始电平为高,初始LED不点亮;
        第三步:将PD13,PD14,PD15的标签设置为LED2,LED3,LED4;
        

       4.配置系统外设时钟
        
       5.生成工程。
        第一步:点击生成代码;
        第二步:设置工程名称和存储路径以及工具链/IDE为MDK_V5;
        第三步:设置堆栈大小;
        第四步:设置设置zip固件包路径;        第五步:点击确定。

        

四、代码细节交代



       生成的工程没有Delay_ms和Delay_us函数,需要延时则需要加入BSP包里的at32f423_board.c和at32f423_board.h文件;
      用到了printf也就用到了UART,需要在at32f423_conf.h和打开#define USART_MODULE_ENABLED(取消注释)。
      main.c代码:
      
/* Includes ------------------------------------------------------------------*/
#include "at32f423_wk_config.h"

/* private includes ----------------------------------------------------------*/
/* add user code begin private includes */
#include "at32f423_board.h"
#include "stdio.h"
/* add user code end private includes */
/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]  take some delay for waiting power stable, delay is about 60ms with frequency 8MHz.
  * @param  none
  * @retval none
  */
static void wk_wait_for_power_stable(void)
{
  volatile uint32_t delay = 0;
  for(delay = 0; delay < 50000; delay++);
}

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url] main function.
  * @param  none
  * @retval none
  */
int main(void)
{
  /* add user code begin 1 */
        delay_init();
  /* add user code end 1 */

  /* add a necessary delay to ensure that Vdd is higher than the operating
     voltage of battery powered domain (2.57V) when the battery powered
     domain is powered on for the first time and being operated. */
  wk_wait_for_power_stable();
  
  /* system clock config. */
  wk_system_clock_config();

  /* config periph clock. */
  wk_periph_clock_config();

  /* nvic config. */
  wk_nvic_config();

  /* init gpio function. */
  wk_gpio_config();

  /* add user code begin 2 */
        uart_print_init(115200);
        printf("LED例程\r\n");
  /* add user code end 2 */

  while(1)
  {
    /* add user code begin 3 */
                gpio_bits_toggle(LED2_GPIO_PORT,LED2_PIN);
                gpio_bits_toggle(LED3_GPIO_PORT,LED3_PIN);
                gpio_bits_toggle(LED4_GPIO_PORT,LED4_PIN);
          printf("LED_Toggle\r\n");
                delay_ms(500);
    /* add user code end 3 */
  }
}

五、效果显示



      

六、新的与体会



       生成的工程没有Delay_ms和Delay_us函数,延时不太方便,建议AT32_Work_Bench生成代码使顺便使用SystemTick生成延时函数。
       代码在附件。

  

AT32F423VCT7_LED.zip

6.98 MB

使用特权

评论回复
沙发
Tristan_C| | 2023-10-23 22:13 | 只看该作者
神速神速

使用特权

评论回复
板凳
Aeddg| | 2023-10-27 08:10 | 只看该作者
谢谢分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

152

帖子

2

粉丝