【Adventure.电赛】串口屏入门(NID.2)

本教程基于19级唐承乾学长授课内容完成,主控用的是F401,有FPU库,ADC少了一点,后续可能升级为H7或者F4VBT6,下面是学长的视频

串口屏入门(按键,波形)_哔哩哔哩_bilibili

配置环境

本次用的是stm32F401ccu6

我们先看看RCT6的ADC

还是很多的,所以够用,或者直接上H750

初始化环境:

校科协的板子没有高速外部时钟,但是RCT6那款有,可以用他来试试

打开串行总线

有钱没钱直接开最高,速度越快越好

我们跟着板子上的RGB选一下就行,我选的PA8

串口中断打开,我们的操作都在中断里面执行

勾选加命名,在“project”里面命名

直接生成代码,然后在keil和vscode里面联调

基本思路

1.串口屏与电脑通信

这个用来写页面和设计面板,设计按下事件,比如发送什么值,然后我们在单片机程序里面写对应的事件

2.电脑写单片机程序

在串口的中断里面完成处理

3.单片机控制串口屏

题外话,可以用充电宝加ch340来拉供电

流程+代码

1.点灯灭灯

1.1屏幕设计

右下角要在页面进行初始化,不然用不了

然后中间的代码显示都是用的组件,可以跟着视频自己建一个字库,这里简单教程一下

这里做个字库,fonts来选字号,字自己命名一下,添加就好了

附上代码

初始化

baud=115200//115200是串口通信波特率,可以自己随意设置

按键

printh 01//发送十六进制数0x01,用在按键上

页面切换

page pagex//跳转到页面pagex,pagex是页面的名称,用在按键上

可以用电脑端串口来测试一下。

1.2 单片机端设计

设计为按下“亮灯”为 0x01

按下“灭灯”为0x02

下面是要用到的代码

文本显示

printf("t2.txt=\"%u HZ\"\xff\xff\xff", FQ); //显示频率

波形显示

printf("add 1,0,%d\xff\xff\xff",30);//(往ID为1的曲线控件的0通道添加数据30)

判断接收到的数据

switch(Res)
{
   case 0x01:
  {
       LED0=0;
  } break;
   case 0x00:
  {
       LED0=1;
  } break;                    
}

开始编程~

uint8_t RX = 0;
uint16_t FQ = 1000;
uint8_t a[305];//这个是自己拉的曲线控件的大小

设一些我们用的变量,比如说上面的RX,就是我们的小灯判断变量

HAL_UART_Receive_IT(&huart2,(uint8_t *)&RX,1);
for(uint8_t i=0;i<305;i++)
{
  a[i]=(uint8_t)((sin(2*3.1415926*i/305)+1)*200/2);
}

在主函数部分写,中断读取,不要放在while里面,不然会一直读

在我们中断处理函数里面进行判断(一定要在mx配置完成后再来)

自动排版快捷键 ctrl K + ctrl F

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if (huart == &huart2)//接受成功之后就可以进入判断
  {
    switch (RX)
    {
    case 0x01:
    {
      HAL_GPIO_WritePin(LED_B_GPIO_Port, LED_B_Pin, GPIO_PIN_RESET);
      printf("t1.txt=\"%d \"\xff\xff\xff", FQ);//显示文字(这里是整数)格式
      for (uint16_t i = 0; i < 305; i++)
      {
        printf("add 7,0,%d\xff\xff\xff", a[i]); //显示曲线控件
      }
    }
    break;
    case 0x02:
    {
      HAL_GPIO_WritePin(LED_B_GPIO_Port, LED_B_Pin, GPIO_PIN_SET);
    }
    break;
    }
    HAL_UART_Receive_IT(&huart2, (uint8_t *)&RX, 1); // 循环使能,才能不断接收
  }
}

判断读取成功,效果明显。

显示了数字,没有试过文字,明天试试。

这个显示部分有个知识点,我们下面单独说一下。

读取一个正弦波,由内部函数发生的,所以我们写了一个正弦发生函数。

printf()配置串口重定向

/* USER CODE BEGIN 1 */
#include <stdio.h>//这个也要记得

int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}

int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart2, &ch, 1, 0xffff);
  return ch;
}
/* USER CODE END 1 */

这样子才能在main.c里面用到

当当当,串口屏入门完成啦!明天学习怎么显示波形和怎么发生信号~

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇