【灵动微电子 L0136 温控器/遥控器应用】创建工程模板+点灯
1、开发板简介
首先感谢平台提供的测评活动,拿到开发板的时候,还是比较惊艳的。灵动的工程师对于开发板硬件设计真的很懂,很多地方都体现着设计美感。开发板的板载硬件资源非常丰富,有LCD,eeprom,flash,按键,ADC,LED,音频,红外等等,基于开发板可以直接diy出很好的作品了。
图1-1 开发板图
2、创建工程模板
首先要说的是,灵动提供的官方网站,可以直接生成对应的实验工程,但是对于我来说,自动生成的工程目录结构,让我有点不太习惯,所以,我自己建一个工程模板,为后续的功能移植开发打下一个基础,其实基本也是拷贝的helloworld实验工程的文件,只是目录结构自己整理了一下。
2.1 创建工程目录,目录结构如下
mm32l0136c7p_hal_non_t(主目录,存放工程文件)
——core(用于存放启动文件,官方核心库)
——user(用于存放用户代码文件)
——hal_lib(用于存放官方hal库)
——driver(用于存放硬件驱动代码文件)
2.2 创建工程,对工程进行相应的配置
这里不详述工程创建及配置的过程了,因为网上关于创建keil工程的教程很多,只将工程模板打包上传上来,可根据这个工程做对比修改即可。
需要注意的是,工程需要增加一个官方的 mm32l0136c_flash 文件,这里将文件放在 core 目录下,并将文件添加到工程配置中。
图2-1 工程设置1
3、点灯实验
3.1 硬件电路
从官方原理图截取的 led 硬件电路原理图如下:
图3-1 led原理图1
图3-2 led原理图2
从图3-1及图3-2可知,led驱动对应的芯片管脚及方式如下:
LED0 —— PB9 —— 输出低电平点亮 —— 红色
LED1 —— PB10 —— 输出低电平点亮 —— 绿色
LED2 —— PB11 —— 输出低电平点亮 —— 蓝色
LED3 —— PC0 —— 输出低电平点亮 —— 黄色
3.2 实验程序//led.c#include "led.h" #include "hal_rcc.h" void led_init(void) { GPIO_Init_Type gpio_initstruct; RCC_EnableAHBPeriphs(RCC_AHB_PERIPH_GPIOB, true); RCC_EnableAHBPeriphs(RCC_AHB_PERIPH_GPIOC, true); gpio_initstruct.Pins = GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11; gpio_initstruct.PinMode = GPIO_PinMode_Out_OpenDrain; gpio_initstruct.Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &gpio_initstruct); gpio_initstruct.Pins = GPIO_PIN_0; GPIO_Init(GPIOC, &gpio_initstruct); GPIO_SetBits(GPIOB, GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11); GPIO_SetBits(GPIOC, GPIO_PIN_0); } void delay(uint16_t ms) { uint16_t i; while(ms--) { i = 4800; while(i--); } }
复制代码//led.h#ifndef _LED_H #define _LED_H #include "stdint.h" #include "hal_gpio.h" #define red_led_on() GPIO_ClearBits(GPIOB, GPIO_PIN_9); #define red_led_off() GPIO_SetBits(GPIOB, GPIO_PIN_9); #define green_led_on() GPIO_ClearBits(GPIOB, GPIO_PIN_10); #define green_led_off() GPIO_SetBits(GPIOB, GPIO_PIN_10); #define blue_led_on() GPIO_ClearBits(GPIOB, GPIO_PIN_11); #define blue_led_off() GPIO_SetBits(GPIOB, GPIO_PIN_11); #define yellow_led_on() GPIO_ClearBits(GPIOC, GPIO_PIN_0); #define yellow_led_off() GPIO_SetBits(GPIOC, GPIO_PIN_0); void led_init(void); void delay(uint16_t ms); #endif
复制代码//main.c#include "board_init.h" #include "led.h" int main(void) { BOARD_Init(); led_init(); while (1) { delay(500); red_led_on(); delay(500); red_led_off(); } }
复制代码 编译,0错误,0警告,nice!
图4-1 工程编译
因为还没有准确的延时函数,红色led大概每秒闪烁一次,实验成功。
5、总结
应用灵动官方的hal库函数开发,基本上与传统的stm32开发模式没什么区别,开发思路一致,细节处对看看函数定义就能理解了。
实验工程程序下载:
继续阅读本篇相关更多标签
全部回复 0
暂无评论,快来抢沙发吧