[活动专区] 【AT-START-F423测评】+ USART与液晶显示

[复制链接]
 楼主| forgot 发表于 2023-11-16 21:34 | 显示全部楼层 |阅读模式
本帖最后由 forgot 于 2023-11-16 21:37 编辑

      因为之前评测过一次F407,所以MDK环境下面早就已经安装好了AT32的相关支持包;这次的评测是通过USART2PC端进行收发数据,将接收到的数据显示在OLED上,并且通过循环发送不同的数据点亮3LED

微信截图_20231116211954.png

硬件连接:
PA2\PA3连接串口工具
PD4\PD6连接OLED液晶模拟I2C时序
PD13\PD14\PD15已经连接在了LED上
微信截图_20231116211807.png

微信截图_20231116211832.png

微信截图_20231116211851.png

软件部分:
初始化时钟、串口2、LED、OLED等;
保留串口1进行打印;
通过串口2的中断获取接收数据;
对数据进行显示和电灯操作;
  1. int main(void)
  2. {
  3.   system_clock_config();
  4.   at32_board_init();
  5.   uart_print_init(115200);
  6.         //oled
  7.         MY_GPIO_Init();
  8.         MY_OLED_Init();
  9.         MY_OLED_START();
  10.         //usart
  11.         usart_configuration();
  12.   while(usart_flag_get(USART2, USART_TDBE_FLAG) == RESET);
  13.   usart_data_transmit(USART2, 0xFF);
  14.   while(usart_flag_get(USART2, USART_RDBF_FLAG) == RESET);
  15.   usart_data_receive(USART2);
  16.         delay_sec(2);
  17.   while(1)
  18.   {
  19.                 MY_OLED_SHOW(usart_rev);
  20.                 MY_LED_SHOW(usart_rev);
  21.         }
  22. }
  1. //MY TEST 21ic:forgot
  2. void MY_OLED_START(void)
  3. {
  4.     int i;
  5.     static int power_on = 0;
  6.     char Line[4][20];

  7.     if(!power_on) {
  8.         power_on = 1;
  9.         memcpy(&Line[0][0],"Hello 21ic!",sizeof("Hello 21ic!"));
  10.          memcpy(&Line[1][0],"AT_START_F423",sizeof("AT_START_F423"));
  11.          memcpy(&Line[2][0],"ID:forgot",sizeof("ID:forgot"));
  12.          memcpy(&Line[3][0],"2023.11.12",sizeof("2023.11.12"));
  13.         OLED_Clear();
  14.         for(i = 0; i < 4; i++) {
  15.             OLED_ShowString(0,i*2,(u8 *)&Line[i][0],16);
  16.         }
  17.     }
  18.                 Show_Rev();
  19. }

  20. void MY_OLED_SHOW(char n)
  21. {
  22.         static char m;
  23.         char p[2] = {0};
  24.         
  25.         if(m != n){
  26.           m = n;
  27.           sprintf(p,"%d",m);
  28.           OLED_Clear();
  29.           OLED_ShowString(0,0,"****************",16);
  30.           OLED_ShowString(0,2,(u8 *)"REV FROM PC",16);
  31.           OLED_ShowString(0,4,"num:",16);
  32.           OLED_ShowString(30,4,(u8 *)p,16);
  33.           OLED_ShowString(0,6,"****************",16);
  34.         }
  35. }

  36. void MY_LED_SHOW(char n)
  37. {
  38.         if(n&0x01){
  39.         at32_led_on(LED2);
  40.         }else{
  41.         at32_led_off(LED2);
  42.         }
  43.         if(n&0x02){
  44.         at32_led_on(LED3);
  45.         }else{
  46.         at32_led_off(LED3);
  47.         }
  48.         if(n&0x04){
  49.         at32_led_on(LED4);
  50.         }else{
  51.         at32_led_off(LED4);
  52.         }
  53. }

PC端工具
微信截图_20231116211624.png

效果展示:
开机界面
微信截图_20231116211708.png

串口接收
微信截图_20231116211729.png

 楼主| forgot 发表于 2023-11-17 09:04 | 显示全部楼层
其实现在对于AT的寄存器很多命名方式还是没熟悉,感觉配置起来还是要学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2061

主题

14485

帖子

59

粉丝
快速回复 返回顶部 返回列表