[AT32F405] AT-START-F405测评 1 开箱和基本外设评测

[复制链接]
3166|5
 楼主| 一路向北lm 发表于 2024-5-23 22:07 | 显示全部楼层 |阅读模式
本帖最后由 一路向北lm 于 2024-5-23 22:11 编辑

开箱图正面

1dd9e17c106bde9c39549248c76de0c.jpg

反面
06b133eb4332897c11b823849147b3b.jpg

usb接口由之前的安卓口换成了type-c啦
3a3bf8e501166ce309d92c0e28a411c.jpg

at-link 仿真器接口也换成了type-c了
7bc806e3062371e007883374e933fe7.jpg


 楼主| 一路向北lm 发表于 2024-5-23 22:15 | 显示全部楼层
本帖最后由 一路向北lm 于 2024-5-23 22:17 编辑

LED(LED2~LED4)
  1. #include "bsp_led.h"


  2. void bsp_led_init()
  3. {
  4.          gpio_init_type gpio_init_struct;

  5.    /* enable the led clock */
  6.    crm_periph_clock_enable(LED2_GPIO_CRM_CLK, TRUE);
  7.          crm_periph_clock_enable(LED3_GPIO_CRM_CLK, TRUE);
  8.          crm_periph_clock_enable(LED4_GPIO_CRM_CLK, TRUE);

  9.    /* set default parameter */
  10.    gpio_default_para_init(&gpio_init_struct);

  11.   /* configure the led gpio */
  12.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  13.   gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  14.   gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
  15.         gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  16.         
  17.   gpio_init_struct.gpio_pins = LED2_PIN;
  18.   gpio_init(LED2_GPIO, &gpio_init_struct);
  19.         gpio_init_struct.gpio_pins = LED3_PIN;
  20.   gpio_init(LED3_GPIO, &gpio_init_struct);
  21.         gpio_init_struct.gpio_pins = LED4_PIN;
  22.   gpio_init(LED4_GPIO, &gpio_init_struct);
  23. }

  24. #ifndef __BSP_LED_H__
  25. #define __BSP_LED_H__
  26. #include "at32f402_405.h"

  27. /**************** define gpio led ******************/
  28. #define LED2_PIN                         GPIO_PINS_4
  29. #define LED2_GPIO                        GPIOF
  30. #define LED2_GPIO_CRM_CLK                CRM_GPIOF_PERIPH_CLOCK

  31. #define LED3_PIN                         GPIO_PINS_5
  32. #define LED3_GPIO                        GPIOF
  33. #define LED3_GPIO_CRM_CLK                CRM_GPIOF_PERIPH_CLOCK

  34. #define LED4_PIN                         GPIO_PINS_6
  35. #define LED4_GPIO                        GPIOF
  36. #define LED4_GPIO_CRM_CLK                CRM_GPIOF_PERIPH_CLOCK


  37. #define LED2_ON()                        (LED2_GPIO->clr = LED2_PIN)
  38. #define LED2_OFF()                       (LED2_GPIO->scr = LED2_PIN)
  39. #define LED2_TOGGLE()                    (LED2_GPIO->tpgr = LED2_PIN)

  40. #define LED3_ON()                        (LED3_GPIO->clr = LED3_PIN)
  41. #define LED3_OFF()                       (LED3_GPIO->scr = LED3_PIN)
  42. #define LED3_TOGGLE()                    (LED3_GPIO->tpgr = LED3_PIN)

  43. #define LED4_ON()                        (LED4_GPIO->clr = LED4_PIN)
  44. #define LED4_OFF()                       (LED4_GPIO->scr = LED4_PIN)
  45. #define LED4_TOGGLE()                    (LED4_GPIO->togr = LED4_PIN)


  46. void bsp_led_init(void);

  47. #endif

  1. int main()
  2. {
  3.     system_clock_config();
  4.         bsp_led_init();
  5.         
  6.         LED2_ON();
  7.         LED3_ON();
  8.         LED4_ON();
  9.         
  10.         while(1)
  11.         {

  12.         }         
  13.         return 0;
  14. }
点亮三颗LED:
微信图片_20240523221614.jpg


 楼主| 一路向北lm 发表于 2024-5-23 22:21 | 显示全部楼层
本帖最后由 一路向北lm 于 2024-5-23 22:45 编辑

TIMER,基本定时,中断翻转LED(100MS)
  1. #include "bsp_timer.h"

  2. void bsp_timer_init()
  3. {
  4.   crm_periph_clock_enable(TMR_PERIPH_CLOCK, TRUE);
  5.   tmr_base_init(TMR, 999, 216- 1);
  6.   tmr_cnt_dir_set(TMR, TMR_COUNT_UP);
  7.   tmr_interrupt_enable(TMR, TMR_OVF_INT, TRUE);
  8.   nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  9.   nvic_irq_enable(TMR_IRQn, 1, 0);
  10.   tmr_counter_enable(TMR, TRUE);
  11. }


  12. void TMR_IRQHandler(void)
  13. {
  14.         static uint16_t count = 0;
  15.   if(tmr_interrupt_flag_get(TMR, TMR_OVF_FLAG) == SET)
  16.   {
  17.     /* add user code... */
  18.                 count++;
  19.                 if(count == 100)
  20.                 {
  21.                    count = 0;
  22.                         LED4_TOGGLE();
  23.                 }
  24.                
  25.     tmr_flag_clear(TMR, TMR_OVF_FLAG);
  26.   }
  27. }
  1. #ifndef __BSP_TIMER_H__
  2. #define __BSP_TIMER_H__
  3. #include "at32f402_405.h"
  4. #include "bsp_led.h"


  5. #define  TMR                    TMR1
  6. #define  TMR_PERIPH_CLOCK       CRM_TMR1_PERIPH_CLOCK
  7. #define  TMR_IRQn               TMR1_OVF_TMR10_IRQn
  8. #define  TMR_IRQHandler         TMR1_OVF_TMR10_IRQHandler


  9. void bsp_timer_init(void);


  10. #endif
  1. int main()
  2. {
  3.     system_clock_config();
  4.         bsp_led_init();
  5.         bsp_timer_init();
  6.         
  7.         while(1)
  8.         {

  9.         }         
  10.         return 0;
  11. }
ab7d19d2bb0a9b5c7f00651d08eb8b67 00_00_00-00_00_30.gif
 楼主| 一路向北lm 发表于 2024-5-23 22:45 | 显示全部楼层
串口printf
  1. #include "bsp_uart.h"

  2. void bsp_uart_init(uint32_t baudrate)
  3. {
  4.     gpio_init_type gpio_init_struct;

  5.     /* enable the uart and gpio clock */
  6.     crm_periph_clock_enable(PRINT_UART_CRM_CLK, TRUE);
  7.     crm_periph_clock_enable(PRINT_UART_TX_GPIO_CRM_CLK, TRUE);
  8.     gpio_default_para_init(&gpio_init_struct);

  9.     /* configure the uart tx pin */
  10.     gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  11.     gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  12.     gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
  13.     gpio_init_struct.gpio_pins = PRINT_UART_TX_PIN;
  14.     gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  15.     gpio_init(PRINT_UART_TX_GPIO, &gpio_init_struct);

  16.     gpio_pin_mux_config(PRINT_UART_TX_GPIO, PRINT_UART_TX_PIN_SOURCE, PRINT_UART_TX_PIN_MUX_NUM);

  17.     /* configure uart param */
  18.     usart_init(PRINT_UART, baudrate, USART_DATA_8BITS, USART_STOP_1_BIT);
  19.     usart_transmitter_enable(PRINT_UART, TRUE);
  20.     usart_enable(PRINT_UART, TRUE);
  21. }


  22. int fputc(int ch, FILE *f)
  23. {
  24.     while(usart_flag_get(PRINT_UART, USART_TDBE_FLAG) == RESET);
  25.     usart_data_transmit(PRINT_UART, (uint16_t)ch);
  26.     while(usart_flag_get(PRINT_UART, USART_TDC_FLAG) == RESET);
  27.     return ch;
  28. }
  1. #ifndef __BSP_UART_H__
  2. #define __BSP_UART_H__
  3. #include "at32f402_405.h"
  4. #include <stdio.h>

  5. /**************** define print uart ******************/
  6. #define PRINT_UART                       USART1
  7. #define PRINT_UART_CRM_CLK               CRM_USART1_PERIPH_CLOCK
  8. #define PRINT_UART_TX_PIN                GPIO_PINS_9
  9. #define PRINT_UART_TX_GPIO               GPIOA
  10. #define PRINT_UART_TX_GPIO_CRM_CLK       CRM_GPIOA_PERIPH_CLOCK
  11. #define PRINT_UART_TX_PIN_SOURCE         GPIO_PINS_SOURCE9
  12. #define PRINT_UART_TX_PIN_MUX_NUM        GPIO_MUX_7


  13. void bsp_uart_init(uint32_t baudrate);

  14. #endif
  1. int main()
  2. {
  3.     system_clock_config();
  4.         bsp_led_init();
  5.         bsp_timer_init();
  6.         bsp_uart_init(115200);
  7.        
  8.         while(1)
  9.         {
  10.                 if(time_flag)
  11.                 {
  12.                         time_flag = 0;
  13.             LED4_TOGGLE();
  14.                         printf("led4 toggle ....\n");
  15.                 }
  16.         }         
  17.         return 0;
  18. }
微信图片_20240523224343.png
gangong 发表于 2024-10-29 16:24 | 显示全部楼层
分享不错
问天少年 发表于 2024-11-12 21:36 | 显示全部楼层
这个type-C接口必须好评啊。以前的USB每次都要去找线。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

3837

帖子

81

粉丝
快速回复 在线客服 返回列表 返回顶部