赞
踩
一、概述
首先感谢雅特力和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生成延时函数。
代码在附件。。
---------------------
作者:袁胜富
链接:https://bbs.21ic.com/icview-3334806-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。