这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【EFM8BB52单片机】温度采集(熟悉软件基本操作,调试UART0打印串口)

共7条 1/1 1 跳转至

【EFM8BB52单片机】温度采集(熟悉软件基本操作,调试UART0打印串口)

专家
2022-01-08 18:45:29     打赏

1前言

上次试了官方的例程,闪灯Blinky例程,但实际对软件熟悉度不够,虽然功能已经完成,能够正常跑实际收获不大,今天再认真学习一些Simplicity Studio v5这个软件,然后试下开发板的别的功能,最先肯定是调试一下打印信息串口,这样可以观察程序的进度。开发板上的调试串口应该是接在P0.4P0.5上面,说实话好几年没调试C51内核的单片机了,一些寄存器都忘了,目前基本上都是ARM内核了,哈哈。找一下手册看下P0.4P0.5uart0,正好可以跑一跑例程测试一下,哈哈。

 

 

 

2.熟悉软件

熟悉软件操作,想看当前函数的定义,点击Open Declaration 可以直接跳转到函数定义。

 


图片2.png

跳转到我选择的函数了,这些功能都是比较常用的,开发的时候会经常使用。

 

3. 板子内核时钟选择

 

在板子上没看见外部晶振,估计是用的内核晶振

图片4.png

看了一下手册,有这些选择,但是在程序里没找到对应的设置,这里不是很清晰啊。

extern void CLOCK_0_enter_DefaultMode_from_RESET(void) {

  // $[HFOSC1 Setup]

  // [HFOSC1 Setup]$

 

  // $[CLKSEL - Clock Select]

  /***********************************************************************

   - Clock derived from the Internal High Frequency Oscillator 0

   - SYSCLK is equal to selected clock source divided by 1

   ***********************************************************************/

  SFRPAGE = 0x0;

  CLKSEL = CLKSEL_CLKSL__HFOSC0_clk24p5 | CLKSEL_CLKDIV__SYSCLK_DIV_1;

  while ((CLKSEL & CLKSEL_DIVRDY__BMASK) == CLKSEL_DIVRDY__NOT_READY);

  // [CLKSEL - Clock Select]$

 

  // $[CLKGRP0 - Clock Group 0]

  // [CLKGRP0 - Clock Group 0]$

}

仔细找了一下,这个函数应该就是初始化时钟,24.5Mhz的主频,后面应该是分频系数。

 

4. 串口测试

首先打开程序进行编译,通过后

 

 

主函数:

void main (void)

{

  unsigned char inputcharacter;       // Used to store character from UART

 

  enter_DefaultMode_from_RESET();

 

  DISP_EN = DISP_BC_DRIVEN;           // EFM8 does not drive display

 

  BC_VCOM_EN = BC_VCOM_CONNECTED;     // Board controller connected to EFM8

                                      // UART pins

 

  SCON0_TI = 1;                       // This STDIO library requires TI to

                                      // be set for prints to occur

 

  while (1)

  {

    RETARGET_PRINTF ("\nEnter character: ");

    inputcharacter = getchar();

    RETARGET_PRINTF ("\nCharacter entered: %c", inputcharacter);

    RETARGET_PRINTF ("\n     Value in Hex: %bx", inputcharacter);

  }

}

串口打印信息:

图片3.png

串口就调通了,可以正常打印数据。也可以接收数据,就是这个初始化函数有点没搞清楚在哪?哈哈。这个例程就在SDK包里,基本上外设操作都有例程,这个对开发项目还是很友好的,不错不错。

 

这个串口波特率我改9600115200都可以接受,估计加了芯片自适应了,MCU输出应该是115200的。

 

下一步准备在这个程序的基础上,加一个单总线的温度传感器,采集温度,通过串口打印出来,如果还有时间加一个lora射频板,通过uart1发送数据,组成无线温度传感器。




助工
2022-01-08 22:58:50     打赏
2楼

讲解的蛮不错的


专家
2022-01-09 09:37:39     打赏
3楼

感谢分享


专家
2022-01-09 09:55:57     打赏
4楼

谢谢分享


高工
2022-01-09 10:11:30     打赏
5楼

Good


专家
2022-01-17 08:45:38     打赏
6楼

感谢分享


专家
2022-01-17 09:00:35     打赏
7楼

谢谢分享


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]