现在的位置: 首页资讯>正文
基于GD32F450的机智云功能板应用
2017年06月14日 作者: 暂无评论 107+ 0

1.开发背景

在GD32F450开发板上配有Arduino接口,若以该接口与机智云的功能板相配合,则可拓展该开发板的功能。就目前来讲,对机智云功能提供支持的核心底板有两种,一种是基于STM32F103的,另一种则是基于ATMEGA328的。以GD32F450开发板来支持机智云功能板则可以又增加一种对其进行支持的核心底板。

就机智云功能板来说,它提供了RGB_LED、小电机、红外感应器、小按键、温湿度传感器、WIFI模块及OLED接口等,如图1所示。受时间的制约,这里仅对RGB_LED、小电机、红外感应、小按键及OLED接口的使用展开说明。

此外,配合片内的RTC、UART、A/D等资源,还实现了RTC电子时钟、串行通讯及A/D采集等功能,在配备传感器和继电器的情况下可进一步增强实用性。

gd

图1 机智云功能板

要对机智云功能板进行编程,主要涉及各引脚的关系构建、GPIO口输入/输出功能的设置及高低电平输出语句的定义、输入电平的读取与判别、脉冲信号与时序的模拟等。

为了便于理解,我们按由简单到复杂的顺序来进行。

2.各功能模块的功能实现

1)小电机

功能板上提供了一个小的直流电机,其接口电路如图2所示。它是通过L9110进行功率驱动,当在IA和IB两端施加相异的电平时,可控制电机的正反转。

小电机

图2 电机电路

电机与GD32F450的连接关系为:

IA-PB10

IB-PE14

小电机的初始化函数为:

void MODER_init(void)

{

rcu_periph_clock_enable(RCU_GPIOB);

gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_10);

gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_10);

GPIO_BC(GPIOB) = GPIO_PIN_10;

rcu_periph_clock_enable(RCU_GPIOE);

gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_14);

gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_14);

GPIO_BC(GPIOE) = GPIO_PIN_14;

}

使用如下高低电平输出语句即可使电机转动,互换高低电平即可实现反向转动。

GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET); //输出高电平

GPIO_WriteBit(GPIOB, GPIO_Pin_4, Bit_RESET); //输出低电平

2)小按键

利用板载的小按键,可进行相应功能的控制,其电路如图3所示:

小电机

图3 按键电路

按键与GD32F450的连接关系为:

K1-PB14

K2-PB15

按键的初始化函数为:

void KEY_init(void)

{ // K1、K2

rcu_periph_clock_enable(RCU_GPIOB);

gpio_mode_set(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_15|GPIO_PIN_14);

gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_15|GPIO_PIN_14);

GPIO_BC(GPIOB) = GPIO_PIN_15|GPIO_PIN_14;

}

K1键控制电机转动的语句如下:

GPIO_WriteBit(GPIOB, GPIO_Pin_4, Bit_RESET);

if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10)==RESET) // K1

{

GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET); // MODOR

}

else

{

GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET);

}

3)红外感应

板载的红外感应器是用于避障控制的,其电路如图4所示。

小电机
小电机
图4 红外感应电路

  

文章分页: 1 2 3

给我留言

您必须 [ 登录 ] 才能发表留言!