本帖最后由 chen00000009 于 2017-4-26 00:26 编辑
4.实验演示 下面演示一下利用CubeMX加上Keil MDK-ARM进行开发,通过按键依次点亮板载三个LED的同时串口打印出一段字符。这个工程同时可以为后续coremark跑分需要的工程做准备。 CubeMX是ST的代码配置工具,用这个工具可免除写底层代码的麻烦,直接在CubeMX生成的基础文件上面添加需要的应用代码即可完成一个工程的开发。 打开CubeMX。点击New Project,在MCU Select界面中选择STM32L496ZGT,如图4-1所示,然后点击OK。
图4-1 选择MCU 首先进行引脚配置。在原理图中找到三个LED对应的管脚,如图4-2所示:
图4-2 LED管脚 在Pinout界面下找到PC7、PB7与PB14,配置为普通的GPIO-output口。 前面开发板基本组成那里介绍过,ST-LINK是连接在MCU的LPUART1上面,分别为PG7和PG8。这里首先需要在Pinout界面左侧选择LPUART1,配置为Asynchronous,然后点击MCU的PG7和PG8,选择LPUART1的相应功能,如下图所示
图4-3 串口设置 完成引脚配置之后进行时钟配置。由于这个Nucleo板没有焊接外部高速晶振,因此本工程中选择使用HSI,此晶振为MCU自带的。进入Clock configuration界面,随后在Clock configuration界面修改以下两个位置: 1、systemclock Mux选择PLLCLK 2、HCLK选择80MHz 如下图所示
图4-4 时钟设置 回车,系统会计算出一个比较合适的参数 最后进行一些功能方面的配置。打开Confiuration界面,进行下面步骤: 点击LPUART1按钮,选择串口通信的配置,将数据位调整为8位,其余不变,保存。
图4-5 串口通信设置 最后点击Project——Generate code进行代码的生成。输出的文件夹和文件名可以任选,IDE需要选择MDK-ARM V5。
图4-6 生成底层代码 随后在生成的文件中找到那个MDK的project的工程文件并打开。 下面来看看如何使用GPIO口。打开stm32l4xx_hal_gpio.h,然后找到如下图所示程序段
图4-7 IO输入输出代码 这里可以看出写GPIO的程序是 HAL_GPIO_WritePin(GPIO_TypeDef*GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); 而串口打印的语句为 Printf([打印的内容]); 因此,只要在之前的while(1)中增加 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_RESET); Printf(“Green”); HAL_Delay(300); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_RESET); Printf(“Blue”); HAL_Delay(300); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14, GPIO_PIN_SET); Printf(“Red”); HAL_Delay(300); 即可循环点亮板载的三个LED的同时会打印出当前LED的颜色。然后点击编译,编译无误之后下载调试程序,最终实验的结果如下 图4-8 演示结果1 打印的字符如下:
图4-9 演示结果2
|