本帖最后由 Larm1 于 2016-8-5 14:00 编辑
虽然STM32的芯片使用了不少,从F030、103、105、205、207、407等都有使用过,但是NUCLEO开发板是第一次使用。NUCLEO开发板的设计初衷是简单、低成本、易用及用扩展等。
对于NUCLEO_F767ZI板子的硬件相关介绍这里不再描述,某娘一下很多,下面简单介绍一下入门级别的开发。
前期准备工作(以MDK为例): 1. 下载并安装MDK_5.10及以上版本;如果之前已安装,请确认已经下载了STM32F7 系列的开发包,见下图:
2. 下载并安装ST_Link/V2-1;
3. 在St的官网上下载F7系列的软件包en.stm32cubef7.zip,该软件包包含了多个F7系列的MCU及相关的外设示例和常用的示例。
准备工作结束。
入门调试:
该部分描述了基于NUCLEO_F767ZI开发板的GPIO操作。
1. 使用一根手机数据线连接PC和开发板,见下图:
2. 开发板第一次与电脑连接时,会出现安装驱动的,按照安装驱动的方式正常安装即可。
一旦与电脑成功连接之后,开发板电源PWR、通讯COM灯常亮,LD1以10Hz的频率闪烁,指示灯位置如下:
3. 解压缩下载的F7系列软件包en.stm32cubef7.zip;
4. 双击目录:STM32Cube_FW_F7_V1.4.0\Projects\STM32F767ZI-Nucleo\Examples\GPIO\GPIO_IOToggle\MDK-ARM\下的工程文件 Project.uvprojx ,打开GPIO示例程序,此时工程结构框架已经完全可以正常使用;
重新编译下载并运行程序,现象时LD1指示灯以10Hz频率闪烁;
5. 增加如下功能,LD2指示灯与LD1一同闪烁,按下USER按键时LD3亮,否则LD3灭,相关硬件原理图如下:
PS:上图中的LD1最终是由一个运放电路驱动,猜测应该是可以通过DA或其他方式输出不同的电压以调节LD1的亮度,实现调光功能。
6. 从以上原理图可以看出,三个指示灯和一个按键的锡桥分别是:SB120、SB139、SB118和SB173,原图图中标记为“close”,结合开发板一看,所有的锡桥已经用0欧姆的电阻短接,见下图:
7. 程序修改如下:
intmain(void)
{ HAL_Init();
/* Configure the system clock to 216 MHz */ SystemClock_Config();
/* -1- Enable GPIO Clock (to be able toprogram the configuration registers) */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE();
/* -2- Configure IO in output push-pull modeto drive external LEDs */ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed =GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_7| GPIO_PIN_14; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
//// USER KEY GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed =GPIO_SPEED_FREQ_MEDIUM;
GPIO_InitStruct.Pin = GPIO_PIN_13; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/* -3- Toggle IO in an infinite loop */ while (1) { HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0); HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_7);
if (GPIO_PIN_SET ==HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)) { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_RESET); }
/* Insert delay 100 ms */ HAL_Delay(100); } }
结论: 1. 程序下载运行工程演示正常; 2. 开发板确实简单、易上手。
本帖的操作对熟悉MDK开发环境的读者看起来比较顺手。
|