lvxinn2006

  • 2019-05-26
  • 发表了日志: 【 STM32WB55 测评】_06_温湿度数据上传实验

  • 发表了主题帖: 【 STM32WB55 测评】_06_温湿度数据上传实验

    本次活动测评开发板STM32WB55 Nucleo Pack由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持! https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32WB/family/81/sub_family/252/sub_child_family/0/layout/product 【实验目的】· 熟悉STM32WB55的串口模块的配置与使用。· 掌握DHT11的通信时序· 掌握使用GPIO处理通信时序 【实验环境】· NUCLEO-WB55 Nucleo Pack开发板· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32WBxx_DFP.1.0.0.pack· 串口调试助手· DHT11温湿度模块 【实验资料】· NUCLEO-WB55 Nucleo Pack开发板原理图· STM32WB55xx Data Sheets· STM32WB55xx Reference manual(参考手册)· DHT11用户手册 【实验分析】原理图: 连接如图所示,灰色线连接到电源的负极,黑色线连接到3.3V正极,白色是数据线,连接到PC10引脚。DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。数据格式::8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据+8bit 校验位。校验位数据定义:“8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据”8bit 校验位等于所得结果的末 8 位。 数据时序图用户主机(MCU)发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,幵触发一次信采集。信号发送如图所示: 外设读取步骤主机和从机之间的通信可通过如下几个步骤完成(外设(如微处理器)读取 DHT11 的数据的步骤)。步骤一:DHT11 上电后(DHT11 上电后要等待 1S 以越过不稳定状态在此期间不能发送任何指令),测试环境温湿度数据,幵记录数据,同时 DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电平;此时 DHT11 的DATA 引脚处于输入状态,时刻检测外部信号。步骤二:微处理器的 I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 18ms,然后微处理器的 I/O设置为输入状态,由于上拉电阻,微处理器的 I/O 即 DHT11 的 DATA 数据线也随之变高,等待 DHT11 作出回答信号,发送信号如图所示: 步骤三:DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后 DHT11 的 DATA引脚处于输出状态,输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,微处理器的 I/O 此时处于输入状态,检测到 I/O 有低电平(DHT11 回应信号)后,等待 80 微秒的高电平后的数据接收,发送信号如图所示: 步骤四:由 DHT11 的 DATA 引脚输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据,位数据“0”的格式为: 50 微秒的低电平和 26-28 微秒的高电平,位数据“1”的格式为: 50 微秒的低电平加 70微秒的高电平。位数据“0”、“1”格式信号如图所示: 结束信号:DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。但 DHT11 内部重测环境温湿度数据,幵记录数据,等待外部信号的到来。 【实验代码】本实验在上一实验基础上进行添加 #include #include #include "uart.h" void GPIOSetDir(GPIO_TypeDef *GPIO, int pin, int dir) {         if (dir == 0){                 GPIO->MODER        &= ~(0x3UL

  • 2019-05-22
  • 发表了日志: 【 STM32WB55 测评】_05_UART寄存器配置实验

  • 发表了主题帖: 【 STM32WB55 测评】_05_UART寄存器配置实验

    本次活动测评开发板STM32WB55 Nucleo Pack由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持! https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32WB/family/81/sub_family/252/sub_child_family/0/layout/product 【实验目的】· 熟悉STM32WB55的串口模块的配置与使用。 【实验环境】· NUCLEO-WB55 Nucleo Pack开发板· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32WBxx_DFP.1.0.0.pack 【实验资料】· NUCLEO-WB55 Nucleo Pack开发板原理图· STM32WB55xx Data Sheets· STM32WB55xx Reference manual(参考手册) 【实验分析】· 查看原理图在NUCLEO-WB55中,最方便使用的UART串口就是USART,直接连接到了ST_LINK的虚拟串口,原理图如下: 在STM32WB55中,有两组串口模块:LPUART和USART,通过查询手册STM32WB55xx Data Sheets,可知这两个引脚对应着USART1功能模块,如下图所示: · 查看STM32WB55xx Reference manual1. 启用GPIO时钟与前面实验一样,使用GPIO端口之前,需要先开启时钟,这里使用了GPIOB,所以需要将RCC->AHB2ENR的[1]位置1,原理如下图所示: 2. 设置GPIO引脚功能开启GPIOB的时钟以后,设置GPIO的功能,即设置GPIOB_MODER寄存器,根据参考手册,MODER寄存器定义如下: 对应PB6和PB7引脚的位置分别位于[13:12]、[15:14]四个位中,在位段的描述说明中,可以看到00为输入模式,01为通用输出模式,10为复用功能模式,根据应用需求,我们需要把PB6和PB7作为UART的Tx和Rx来使用,所以我们需要把MODER[15:14][13:12]都配置成10,即复用功能模式(AF)当MODER寄存器配置为AF模式时,需要使用AFRL、AFRH两个寄存器对引脚功能进行进一步设置,寄存器定义如下: 在这个寄存器中,每4个位控制一个引脚的功能,PB6引脚的功能位于[27:24]四个位中,PB7引脚的功能位于[31:28]四个位中,每4个位中0000~0111共8个组合表示引脚的8种功能,这里把对应的值用AF0~AF8来表示,每个引脚对应的值,所对应的功能也不同,下表描述的是引脚AF值所对应功能,其中PB6的AF7表示USART1_TX,PB7的AF7表示USART1_RX功能 至此,我们基本就确定了AF寄存器的配置方法,需要把[27:24]配置为0x7 (0111:AF7),[31:28]也配置为0x7 (0111:AF7)。这样,PB6和PB7的引脚功能就配置好了,接下来就需要配置USART外设模块了。 3. 启用USART1时钟USART连接在系统的APB2总线,所以USART的时钟控制,在APB2ENR中,如下图所示: 需要把寄存器的[14]位置位,即可开启USART1的时钟。 4. 使能USART1模块USART寄存器比较多,但是大多数默认参数已经满足需求,我们需要设置的寄存器并不多,首先要配置CR1寄存器,重点要设置下图所示的三个数据位: 寄存器中的[3][2]两个位用来使能Tx和Rx,[0]位用来使能USART设备,[5]位用来启用接收数据中断。 5. 设置波特率BRR寄存器 波特率的计算方法 计算方法详见文档。本人根据文档,总结了一个公式,可以直接用在代码中:        //Baudrate         = Fclk/(16*USARTDIV)        //USARTDIV        = Fclk / Baudrate / 16        //                                        = SystemCoreClock / 115200 / 16        temp = SystemCoreClock * 100 / baud / 16;        brr = ((temp / 100)AHB2ENR |= (1

  • 2019-05-21
  • 发表了日志: 【STM32WB55 测评】_04_WEB控制实验

  • 发表了主题帖: 【 STM32WB55 测评】_04_WEB控制实验

    本帖最后由 lvxinn2006 于 2019-5-21 21:30 编辑 本次活动测评开发板STM32WB55 Nucleo Pack由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32WB/family/81/sub_family/252/sub_child_family/0/layout/product 【实验目的】· 熟悉如何使用STM32Cube提供的示例程序;· 熟悉如何使用STM32WB55的串口通信功能。 【实验环境】· NUCLEO-WB55 Nucleo Pack开发板· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32WBxx_DFP.1.0.0.pack 【实验资料】· NUCLEO-WB55 Nucleo Pack开发板原理图· STM32WB55xx Data Sheets· STM32WB55xx Reference manual(参考手册) 【实验分析】本示例主要使用NUCLEO-WB55的串口通信功能,并且配合Python实验远程控制USB Dongle上的灯亮灭的功能。本文从简单实用的角度,直接使用HAL库实现应用的开发。1. 硬件设计下图是STlink的虚拟串口与芯片之间的连接原理图,可以知道串口使用了单片机的PB6和PB7。 在STM32WB55中,有两组串口模块:LPUART和USART,通过查询手册STM32WB55xx Data Sheets,可知这两个引脚对应着USART1功能模块,如下图所示: 2. 软件设计这里使用官方示例代码中的STM32Cube_FW_WB_V1.0.0\Projects\NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pServer项目,在这个项目的基础上进行功能的添加以及修改。在main函数中,添加代码: MX_USART1_UART_Init();复制代码 该代码作用是初始化串口,把main函数里的任务主循环修改为如下代码:while(1) { if (HAL_UART_Receive_IT(&huart1, &ch, 1) == HAL_OK){ protocol_decode(ch, cmd_run);    //作为通信协议数据进行解析 } SCH_Run(~0);     /* USER CODE END WHILE */   }复制代码 设计串口通信协议如下:数据格式表buf[0]buf[1]buf[2]buf[3]buf[length]send_buf[n]数据包头设备号数据类型数据长度数据校验0xAAdev_notype_datalengthdataCrc16校验1byte1byte1byte1bytelength bytes2bytes数据包头:家庭网关向M0发送数据包头为0xAA设备号: 为M0设备号(房间号)数据类型:0x02 控制数据(命令数据)数据长度:为数据域的字节数校验:crc16校验位    数据对应命令命令动作0x30LED_ON(开灯)0x31LED_OFF(关灯)0x32Fan_ON(开风扇)0x33Fan_OFF(关风扇)0x34Nixietube_ON(开数码管)0x35Nixietube _OFF(关数码管)0x36BEEP_ON(开蜂鸣器)0x37BEEP_OFF(关蜂鸣器 在main函数前,添加如下函数的定义: /* USER CODE BEGIN 0 */ /* 解析控制协议函数 */ int protocol_decode(int ch, void (*cmd_proc)(unsigned char *, int)) {     static unsigned char buf[20];     static int index = 0;    //记录缓冲区数组下标     if ((index == 0) && (ch == 0xAA)){//判断数据包头         buf[index++] = ch;     }else if (index > 0){ //已经收到数据头         if (index < 4){    //接收数据信息字段             buf[index++] = ch;         }else if ((index < buf[3] + 6) && (index < 20)){    //校验位             buf[index++] = ch;             if (index == buf[3] + 6){//接收到最后一个数据                 if (!cmd_proc) return -1;                 cmd_proc(buf+4, buf[3]); //根据命令代码,执行相应动作                 index = 0;    //index归零表示重新接收新数据                 return 1;             }         }else{    //无效数据包,丢弃             index = 0;             return -2;         }     }     return 0; } #include "ble_types.h" #include "uuid.h" #include "p2p_stm.h" /* 执行命令的函数 */ void cmd_run(unsigned char *src, int len) {     uint8_t data[2] = {0x01, 0x00};     switch(src[0]){         case 0x30:             data[1] = 0x01;         break;         case 0x31:             data[1] = 0x00;         break;     }        //P2P_Server_App_Context.ButtonControl.ButtonStatus=data[0];     P2PS_STM_App_Update_Char(P2P_NOTIFY_CHAR_UUID, data);     HAL_UART_Transmit(&huart1, data, 2, 1000); } /* USER CODE END 0 */复制代码 【实验现象】· · 使用串口调试助手测试串口通信,按照设计的通信协议,模拟控制数据的发送: 可以看到USB Dongle端的LED灯在两种不同状态下切换状态。这里使用了自己用Python开发的物联网网关服务,主要原理如下图所示; 打开网关服务: 网关运行起来效果如上图所示,此时打开浏览器,并访问:http://127.0.0.1 点击远程控制,在右侧能看到几个控制按钮,点击控制按钮时,可以看到页面上按钮的状态会有所变化: · 每点击一次Led灯按钮后,可以看到USB Dongle端LED的状态变化。

  • 2019-05-07
  • 发表了主题帖: 【 STM32WB55 测评】_03_第一个程序

    本帖最后由 lvxinn2006 于 2019-5-7 13:42 编辑 本次活动测评开发板STM32WB55 Nucleo Pack由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32WB/family/81/sub_family/252/sub_child_family/0/layout/product 【实验目的】· 熟悉如何通过原理图分析电路原理;· 熟悉如何使用MCU的用户参考手册;· 通过本实验掌握 GPIO 输出功能的使用方法;· 初步熟悉单片机寄存器的配置方法;· 用最少的代码点亮LED灯。 【实验环境】· NUCLEO-WB55 Nucleo Pack开发板· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32WBxx_DFP.1.0.0.pack 【实验资料】· NUCLEO-WB55 Nucleo Pack开发板原理图· STM32WB55xx Data Sheets· STM32WB55xx Reference manual(参考手册) 【实验分析】硬件分析根据本人的习惯,拿到手的开发板,一般都先从底层硬件开始了解,新的单片机,也是从数据手册和参考手册入手,可能很多人更喜欢直接使用STM32CubeMX,也是个人习惯问题,更喜欢离单片机更近一些。这次测评,我也尽量在后期测评中使用Cube,减少底层原理的分析,毕竟人们已经不太喜欢太多原理性的东西,还是简单为好,而且蓝牙BLE5.0协议栈部分,直接使用Cube将会大大减少工作量。所有开发板功能的使用,首先都离不开原理图,先要得到开发板的原理图,点击如下地址,可以进入原理图下载页面下载原理图打开如下: 在页面中有两种板号的原理图,这两个分别是Nucleo板和USB Dongle板,检查我们手里的开发板,找到对应的板号: 在开发板的背面,可以看到,我手里的Nucleo开发板板号为MB1355,所以下载对应的文件: 下载后将文件解压出来: 可以看到,官方提供的硬件资源很全,原理图、PCB都给提供了,这点还是要给ST点赞的。这套硬件资料是使用AltiumDesigner设计的,所以需要使用该软件打开,直接打开MB1355C.PrjPcb工程文件即可。在打开工程文件的时候会提示很多依赖的PCB库不存在,基本可以无视,不影响我们使用原理图。 这里不对原理图进行分析,我们今天的目的是控制LED灯,直入正题,直接打开MCU.SchDoc: 这张图中包含了三个LED灯的原理图,直接看图,三个LED灯连接如下:LED1        ——PB5LED2        ——PB0LED3        ——PB1根据原理图,可以分析三个灯的开启条件:引脚高电平,点亮LED;引脚低电平,熄灭LED。 查询芯片参考手册根据单片机的使用常识,在接触到一个新的单片机时,最先看的一定是参考手册(STM32WB55xx Reference manual)的前2~3章,这些章节有助于让我们从整体架构上对单片机有个了解。这里跳过第一章的介绍,直接找功能框图,但是发现在参考手册里并没有找到这个框图,根据ST的习惯,一般都把功能框图放在数据手册里,查看数据手册(STM32WB55xx Data Sheets): 这里很清晰的看到整个芯片内部的组成架构,从这个图中可以清晰的看到,有两个MCU核心,Cortex-M0+和Cortex-M4,而且每个核心分别有一个属于自己的AHB Lite总线,M4核心控制了大部分外设,M0+只控制了无线IP部分,这也是M0+的使命所在,主要用来处理协议栈部分的程序。可以看到GPIO的功能部分,是被M4核心独占的,M4核心才是本单片机的主CPU,我们写的程序默认也是又M4核心运行的。了解完功能框图,接下来了解下时钟树,因为所有单片机的外设都是需要时钟进行工作的,所以单片机的时钟系统,是我们第二个需要知道的,时钟树在参考手册(STM32WB55xx Reference manual)的207页,如下图所示: 时钟系统在单片机中是一个比较复杂的系统,配置的寄存器也比较多,对于单片机新人,不建议自己配置时钟,可以借助STM32CubeMX工具进行配置。本章不需要对时钟进行配置,使用系统默认的时钟配置。查看了RCC的相关配置,初始的系统工作时钟是4MHz,这不影响点LED灯。 配置GPIOB时钟 需要设置AHB2ENR的[1]位为1。 设置GPIOB 需要设置相应的位置,设置为01,即可设置引脚为输出模式。 通过写ODR寄存器,为引脚设置高低电平。 【实验代码】新建项目 编写代码代码清单如下:#include "stm32wbxx.h"                  // Device header enum{         LED1=5,         LED2=0,         LED3=1, }; #define MODIFY(reg,mask,value)        MODIFY_REG((reg),(mask), (value)

  • 2019-05-06
  • 发表了主题帖: 【 STM32WB55 测评】_02_感受超低功耗的强大

            本次活动测评开发板STM32WB55 Nucleo Pack由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!        https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32WB/family/81/sub_family/252/sub_child_family/0/layout/product 昨天第一时间拆了封,先来体验以下下超低功耗的强大,由于公司网络原因,开发资料还没下载全,下载资料之余,先按照包装后面的文档,体验一下Nucleo-WB55的初始程序。   说明上图所述,按照说明,操作把两块Nucleo-WB55接上电源,Nucleo-WB55一端用USB线连接到了电脑上,我为了体验一下超低功耗,USB Dongle一端,没有使用充电宝,也没有连接电脑,而是这个,低功耗测试神器,不要滚动太快,看看下图,看起来很小巧的一个东西,而且比较精致,先猜一猜这是什么? 好吧,露一下这个神器的真面目吧……值得注意的一点,这个东西,通一次电,USB输出端是带有一个容量比较大的电容的,可以保存一定电量,我用的这个充电器的输出电容可能容量比较大,拔掉电源后,可以持续让USB Dongle工作2分钟左右。 按照说明书说明,两端通上电以后,按USB Dongle上的按键,蓝色灯会亮,5秒以后绿灯开始跟着Nucleo-WB55一端一起闪烁。 这是按下USB Dongle上的按键时,会看到远端的Nucleo-WB55上的蓝色LED灯亮起: 再按一下则会熄灭 这个操作主要演示了从USB Dongle一端远程控制Nucleo-WB55的实验。 接下来继续进行实验,按下Nucleo-WB55上的SW1按键,可以看到USB Dongle一端的蓝色LED灯亮起: 再按一下,蓝色LED灯熄灭: 这个操作演示了从Nucleo-WB55一端控制USBUSB Dongle的实验。 通过这个简单的小实验,主要体现了以下方面:1. STM32WS55系列芯片的超低功耗;2. 蓝牙BLE的连接便捷性。 此内容由EEWORLD论坛网友lvxinn2006原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2019-05-05
  • 发表了主题帖: 【 STM32WB55 测评】_01_初见

    本次活动测评开发板STM32WB55 Nucleo Pack由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32WB/family/81/sub_family/252/sub_child_family/0/layout/product 最近难得有了一些属于自己的时间,在EEworld的活动种看到了本次测评活动,也是因为自己比较喜欢钻研硬件,对新技术、新事物有很强的求知欲,所提提交了测评申请,并且非常幸运的通过了审核,能够有幸参加了EEwolrd与意法半导体联合提供的开发板STM32WB55 Nucleo Pack的测评活动。在这里要感谢EEWorld提供的这次测评机会,以及ST为此次活动提供的开发板、软硬件相关的各种开发资料,为本次评测提供了大力支持!上次参加ST NUCLEO-G071RB测评时,可能由于个人工作原因,后续有些测评实验没有提交到论坛上来,也是借此次机会,把以前的没来得及提交的,换到这个新平台上来实现。本次测评的STM32WB55 Nucleo Pack开发板,是本人接触过的第三款ST官方的开发平台,这款开发板与之前接触过的Nucleo有很大区别,最大的区别在于产品的定位不同,新产品的主要特点如下:1. STM32WB是支持无线功能的双核 MCU。2. STM32WB系列的产品定位主要是面向最新的无线传感技术,最新的蓝牙BLE5.0技术,以及提供OpenThread 认证的软件协议栈。3. 无线技术可同时运行 BLE/OpenThread 协议。4. 内嵌通用 MAC,允许使用 IEEE 802.15.4 专有协议栈(如 ZigBee®)或其它专有协议,从而为将设备连接到物联网 (IoT) 提供更多选择。从产品特点就可以看出,这款芯片产品,依然是主打物联网应用,为物联网应用提供了非常强大的无线通信能力,而且由于STM32WB 平台是在超低功耗STM32L4系列 MCU 的基础上发展而来,而且提供同样的数字与模拟外设,所以非常适合需要更长电池使用寿命和复杂功能的应用。最最重要的一点,这是本人第一次接触STM32的多核单片机,我觉得这应该会很有意思,所以在我在这篇文章中可以预言到我后期的测评,可能还是会更多的从芯片的体系结构方面入手,就像上次的ST NUCLEO-G071RB一样,从底层研究这款芯片,而不仅仅是为了简单应用。言归正传,申请开发板已经有几天时间了,由于五一假期的原因,今天下午5点才刚刚收到快递,哈哈,收到快递的第一件事就是迫不及待的拆箱验收了,很急切的想看看这新伙计到底长什么样子,网络时代,毕竟不太容易轻易相信网上的照片。直接上一张拆箱之后的图吧,拆箱过程就省略了,主要是爱板心切,就忘记拍拆箱过程了。正面图: 看到正面的第一眼,嚯!这么大的包装,第一次接触这么大包装,仔细看,也难怪,这套开发平台由两个独立的板子组成。对比一下包装尺寸吧: 又仔细一看,唉?这Nucleo怎么了?就剩主板了?STLink没了?有点慌啊,这怎么玩儿?右下角这个小玩意儿倒是蛮可爱的。这仅仅是第一眼的错觉,这款开发板虽然包装变大了,但是背板的封面卡片依旧还是以前的排版风格,右侧部分是开发板的详细介绍,基本内容如下:NUCLEO开发板特性:1. 使用STM32WB55RGV6微控制器2. 板载PCB天线和SMA连接座;3. 支持CR2032柔性电源;4. 双USB接口(应用/调试);5. 多个用户按键和LED灯;6. 支持Arduino和ST闪蝶连接器;7. 板载ST-LINK/V2-1调试器和烧写器;8. 支持ARM Mbed技术;USB软件狗:1. 使用了STM32WB55CGU6微控制器2. 板载PCB天线和UFL连接端子;3. 可切断PCB(切断USB插头部分,可以当作独立模块使用) 左下角: 这部分简单描述了STM32WB55单片机的特性:1. ARM Cortex-M4微控制器,64MHz/80DMIPS,专用ARM Cortex-M0+无线电协处理器,32MHz2. 多协议支持:BLE5.0, 802.15.4, 并行模式3. 1MB的Flash存储器;4. 256KB的SRAM;5. 高性能射频:接收RX -96dBm/-100dBm;发送TX +6dBm。不能放掉任何一个细节: 在以往的NUCLEO中,从来没见过这两个图标,这两个图标表明开发板可以支持手机APP,但不知道具体支持什么APP,这个还希望路过的大神们能够指点迷津!背面图: 背面的布局和内容就很熟悉了,不过内容依旧比较丰富,上半部分是开发板的内置程序的使用方法,这个等一会儿拆封以后再进行操作吧。支持的系统、开发工具跟以前一样,依然是Keil-MDK、IAR EWARM、GCC。 这两个蓝色的图标,是两款ST提供的开发辅助工具软件,这个暂时还不知道怎么用,等到以后实测时再慢慢研究。 这三个图标,解决了我前面遇到的问题,就是手机应用商城里的三个APP,可以辅助调试蓝牙BLE的应用。这三个应用,可以找机会尝试一下。仔细读完所有内容,不得不表扬一下ST,做的每一款产品,说明书做的都非常精炼,半句废话都没有。看完包装了,下面准备拆封咯开发板正面图: 开发板背面图: 好闪亮的一块电池。USB软件狗正面图: 从图上看,这个软件狗也引出了很多引脚,也是可以简单玩一玩的。由于时间原因,今天只做开箱拍照,就不做技术性讨论了,会在后续的帖子种陆续发布技术性话题。好戏才刚刚开场哟! 此内容由EEWORLD论坛网友lvxinn2006原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 发表了日志: 【 STM32WB55 测评】_01_初见

  • 2019-04-30
  • 回复了主题帖: 【名单公布】ST 双核无线 MCU STM32WB55 开发板

    确认信息正确!

  • 2019-03-18
  • 加入了学习《正点原子手把手教你学STM32-M4》,观看 开发环境搭建

  • 加入了学习《正点原子手把手教你学STM32-M4》,观看 开发板入门

  • 2019-01-23
  • 回复了主题帖: 【 ST NUCLEO-G071RB测评】_08_PWM定时器控制三色LED实验

    okhxyyo 发表于 2019-1-22 21:29 颜色很好看。赞赞赞
    透过一层纸,看起来有点像不同颜色的月亮:)

  • 2019-01-22
  • 回复了主题帖: 【 ST NUCLEO-G071RB测评】_08_PWM定时器控制三色LED实验

    RCSN 发表于 2019-1-22 10:37 1、楼主使用寄存器操作值得赞一波,这样在评测中更能深入了解这块MCU 2、楼主为何不妨使用下cubemx?或者 ...
    评测芯片,从底层寄存器角度出发,才能看清与其他芯片的区别,如果寄存器没问题,再使用库函数会感觉简单很多。最重要的是,项目太小,几行代码实现的功能,细节自己把控。

  • 发表了主题帖: 【 ST NUCLEO-G071RB测评】_08_PWM定时器控制三色LED实验

    本帖最后由 lvxinn2006 于 2019-1-22 17:15 编辑 本次活动测评开发板ST NUCLEO-G071RB由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32G0/family/81/sub_family/261/layout/product 【实验目的】· 掌握PWM定时器的原理与使用· 掌握PWM在控制LED亮度功能上的应用 【实验环境】· NUCLEO-G071RB开发板· 三色LED灯模块· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32G0xx_DFP.1.0.0.pack 【实验资料】· NUCLEO-G071RB开发板原理图· STM32G071x8/xB Data Sheet· STM32G071芯片用户参考手册 【实验分析】1、电气连接关系红色R LED        ——> PC9绿色G LED        ——> PC8蓝色B LED        ——> PC10 2、GPIO引脚配置 由上图可知,PC8、PC9、PC10三个引脚分别对应着TIM1_CH1、TIM1_CH2、TIM1_CH3,所以需要把三个引脚都配置成AF2模式。所以需要把这三个引脚配置成响应的AF模式,即AF2。 3、启用TIM1定时器 如图设置,可以通过配置[11]位启用TIM1的时钟。 4、配置定时器高级控制定时器(TIM1)由一个可编程的预分频器驱动的16位自动重装计数器组成,可用于多种用途,包括测量输入的脉冲长度。输入信号的捕获,或输出波形(包括输出比较,PWM,死区插入互补的PWM)。脉冲长度和波形周期可以在几微秒内进行调制。通过设定定时器预分频器和RCC时钟控制器,可以将定时器的工作时钟周期控制在毫秒级别。高级控制定时器(TIM1)和通用定时器器是完全独立的,不共享任何资源。高级控制定时器原理如下: 本实验主要使用该定时器产生PWM信号,通过控制PWM占空比,使用不同占空比的信号,驱动三个颜色的LED灯,以控制三个LED灯的亮度等级,就可以搭配出不同颜色。在定时器输出PWM信号的应用中,最重要的寄存器有:ARR                ——计数重载寄存器,决定了PWM的周期;CCRx        ——比较匹配寄存器,决定了不同引脚的PWM占空比;CNT                ——定时器计数器,定时器计数器可以自增或自减,变化的过程中,不断与CCRx进行比较,一旦CNT达到CCRx的值时,就可以驱动响应的输出引脚发生电平的反转。 关于PWM相关配置的描述如下: 【实验代码】#include "stm32g0xx.h"                  // Device header #include void mdelay(int ms) {         RCC->APBENR1 |= RCC_APBENR1_TIM6EN;        //使能TIM6         TIM6->PSC = SystemCoreClock / 1000 - 1;        //预分频 定时器时钟为1000Hz         TIM6->ARR = ms;        //周期数         TIM6->CR1 |= TIM_CR1_OPM;        //单次脉冲模式         TIM6->CR1 |= TIM_CR1_CEN;        //启动定时器         while(TIM6->CR1 & TIM_CR1_CEN);        //等待定时器结束 } void rgb_init(void) {         /* 初始化IO引脚 */         RCC->IOPENR |= RCC_IOPENR_GPIOCEN;        //使能GPIOC         GPIOC->MODER &= ~(0x3F

  • 发表了日志: 【 ST NUCLEO-G071RB测评】_08_PWM定时器控制三色LED实验

  • 2019-01-18
  • 发表了主题帖: 【 ST NUCLEO-G071RB测评】_07_触摸按键实验

    本次活动测评开发板ST NUCLEO-G071RB由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32G0/family/81/sub_family/261/layout/product 【实验目的】· 掌握使用GPIO中断的使用 【实验环境】· NUCLEO-G071RB开发板· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32G0xx_DFP.1.0.0.pack 【实验资料】· NUCLEO-G071RB开发板原理图· STM32G071x8/xB Data Sheet· STM32G071芯片用户参考手册 【实验分析】原理图: 连接如图所示,灰色线连接到电源的负极,黑色线连接到3.3V正极,白色是信号线,连接到了PC10引脚。触摸按键模块的原理比较简单,通过电容感应,当没有感应到电容变化时,信号线会一直保持低电平,当触摸感应区域时,信号线会变成高电平。因此,可以直接使用外部中断功能进行按键状态的判断,使用上升沿触发中断。 【实验代码】#include "stm32g0xx.h"                  // Device header void GPIOSetDir(GPIO_TypeDef *GPIO, int pin, int dir) {         if (dir == 0){                 GPIO->MODER        &= ~(0x3UL

  • 发表了日志: 【 ST NUCLEO-G071RB测评】_07_触摸按键实验

  • 2019-01-17
  • 发表了主题帖: 【 ST NUCLEO-G071RB测评】_06_DHT11温湿度传感器实验

    本帖最后由 lvxinn2006 于 2019-1-17 11:00 编辑 本次活动测评开发板ST NUCLEO-G071RB由ST意法半导体提供,感谢意法半导体对EEWorld测评的支持!https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32G0/family/81/sub_family/261/layout/product【实验目的】· 掌握DHT11的通信时序· 掌握使用GPIO处理通信时序 【实验环境】· NUCLEO-G071RB开发板· DHT11温湿度模块· Keil MDK-ARM(Keil uVision 5.25.2.0)· Keil.STM32G0xx_DFP.1.0.0.pack· 串口调试助手 【实验资料】· NUCLEO-G071RB开发板原理图· STM32G071x8/xB Data Sheet· STM32G071芯片用户参考手册· DHT11用户手册 【实验分析】原理图: 连接如图所示,灰色线连接到电源的负极,黑色线连接到3.3V正极,白色是数据线,连接到了PC10引脚。DHT11 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由单总线完成。DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。数据格式::8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据+8bit 校验位。校验位数据定义:“8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数据”8bit 校验位等于所得结果的末 8 位。 数据时序图用户主机(MCU)发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,幵触发一次信采集。信号发送如图所示:外设读取步骤主机和从机之间的通信可通过如下几个步骤完成(外设(如微处理器)读取 DHT11 的数据的步骤)。步骤一:DHT11 上电后(DHT11 上电后要等待 1S 以越过不稳定状态在此期间不能发送任何指令),测试环境温湿度数据,幵记录数据,同时 DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电平;此时 DHT11 的DATA 引脚处于输入状态,时刻检测外部信号。步骤二:微处理器的 I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 18ms,然后微处理器的 I/O设置为输入状态,由于上拉电阻,微处理器的 I/O 即 DHT11 的 DATA 数据线也随之变高,等待 DHT11 作出回答信号,发送信号如图所示: 步骤三:DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后 DHT11 的 DATA引脚处于输出状态,输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,微处理器的 I/O 此时处于输入状态,检测到 I/O 有低电平(DHT11 回应信号)后,等待 80 微秒的高电平后的数据接收,发送信号如图所示:步骤四:由 DHT11 的 DATA 引脚输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据,位数据“0”的格式为: 50 微秒的低电平和 26-28 微秒的高电平,位数据“1”的格式为: 50 微秒的低电平加 70微秒的高电平。位数据“0”、“1”格式信号如图所示: 结束信号:DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。但 DHT11 内部重测环境温湿度数据,幵记录数据,等待外部信号的到来。 【实验代码】#include "stm32g0xx.h"                  // Device header #include "uart.h" #include void mdelay(int ms) {         RCC->APBENR1 |= RCC_APBENR1_TIM6EN;        //使能TIM6         TIM6->PSC = SystemCoreClock / 1000 - 1;        //预分频 定时器时钟为1000Hz         TIM6->ARR = ms;        //周期数         TIM6->CR1 |= TIM_CR1_OPM;        //One Pulse mode         TIM6->CR1 |= TIM_CR1_CEN;        //启动定时器         while(TIM6->CR1 & TIM_CR1_CEN);        //等待定时器结束 } void GPIOSetDir(GPIO_TypeDef *GPIO, int pin, int dir) {         if (dir == 0){                 GPIO->MODER        &= ~(0x3UL

最近访客

< 1/4 >

统计信息

已有69人来访过

  • 芯币:64
  • 好友:--
  • 主题:14
  • 回复:9
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言