您的位置:首页 > 新闻 > 资讯 > AT32F425C8T7 开发笔记

AT32F425C8T7 开发笔记

2025/5/13 4:34:27 来源:https://blog.csdn.net/qq_53381910/article/details/139777060  浏览:    关键词:AT32F425C8T7 开发笔记

目录

  • 0x00 AT32F425C8T7 引脚矩阵映射关系
  • 0x01 AT32_Work_Bench 图形化配置指南
  • 0x02 AT32串口打印函数
  • 0x03 AT32 串口中断函数
  • 0x04 AT32 延时函数

0x00 AT32F425C8T7 引脚矩阵映射关系

详情可见AT32手册

AT32的矩阵映射其实也就是开启端口的复用功能,但是它的功能更丰富。

AT32的引脚初始化函数:

  gpio_init_struct.gpio_mode = GPIO_MODE_MUX;/*复用模式*/gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PUT_PUSH_PULL;/*输出模式*/gpio_init_struct.gpio_pins = GPIO_PINS_1;/*引脚号*/gpio_init_struct.gpio_pull = GPIO_PULL_NONE;/*有无上下拉电阻*/gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;/*驱动能力*/gpio_init(GPIOA, &gpio_init_struct);/*初始化引脚*/gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE1, GPIO_MUX_1);/*选择复用功能*/

在这里插入图片描述
在这里插入图片描述

0x01 AT32_Work_Bench 图形化配置指南

AT32_Work_Bench 使用指南

图形化配置工具 AT32_Work_Bench 下载

相关使用介绍

0x02 AT32串口打印函数

使用图形化工具配好引脚就可以开始使用,很简单,不需要自己去配置,并且没有标准库和hal库之说,配出来就是直接能用的函数。

void AT32_LOG(usart_type* USARTx, uint8_t *Data)
{while(*Data!='\0'){ while(usart_flag_get(USARTx, USART_TDBE_FLAG) == RESET);usart_data_transmit(USARTx, *Data);while(usart_flag_get(USARTx, USART_TDC_FLAG) == RESET);Data++;}
}

0x03 AT32 串口中断函数

串口在初始化以后,还需要添加中断函数和使能中断。

中断函数已经被存储在 at32f425_int.c中,需要在这个文件中添加自己的内容

还需要在串口初始化函数中添加以下内容开启中断:

usart_interrupt_enable(USART2, USART_IDLE_INT, TRUE);
usart_interrupt_enable(USART2, USART_RDBF_INT, TRUE);
void USART1_IRQHandler(void)
{if  (usart_flag_get(USART1, USART_IDLEF_FLAG)){usart_flag_clear(USART1,USART_IDLEF_FLAG);}if  (usart_flag_get(USART1, USART_IDLEF_FLAG)){}
}

0x04 AT32 延时函数

#include "at32f425_board.h"
#define STEP_DELAY_MS                    50static __IO uint32_t fac;
static __IO uint32_t fac_ms;void at32_board_init()
{delay_init();}void delay_init()
{systick_clock_source_config(SYSTICK_CLOCK_SOURCE_AHBCLK_NODIV);fac_us = system_core_clock / (1000000U);fac_ms = fac_us * (1000U);
}void delay_us(uint32_t nus)
{uint32_t temp = 0;SysTick->LOAD = (uint32_t)(nus * fac_us);SysTick->VAL = 0x00;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;SysTick->VAL = 0x00;
}void delay_ms(uint16_t nms)
{uint32_t temp = 0;while(nms){if(nms > STEP_DELAY_MS){SysTick->LOAD = (uint32_t)(STEP_DELAY_MS * fac_ms);nms -= STEP_DELAY_MS;}else{SysTick->LOAD = (uint32_t)(nms * fac_ms);nms = 0;}SysTick->VAL = 0x00;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;do{temp = SysTick->CTRL;}while((temp & 0x01) && !(temp & (1 << 16));SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;SysTick->VAL = 0x00;}
}void delay_sec(uint16_t sec)
{uint16_t index;for(index = 0; index < sec; index++){delay_ms(500);delay_ms(500);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com