查看:
2999
|
回复:
3
|
GD32E231 开发板试用分享之直流电机调速
|
|||
LIXIANG
1
主题
4
回复 |
发表于2019-05-19 15:08:09
|
只看该作者
1#
电梯直达
GD32E231 开发板试用分享之直流电机调速
一、 开发板开箱图 附图
二 、 GD32MCU 产品的介绍: 3.Flash: 16KB/32KB/64KB
GD32 MCU 各模块的性能优势 1. GD32E231系列器件是基于ARM ® Cortex?-M23处理器的32位通用微控制器。Cortex?-M23处理器的所有存储访问,根据不同的目的和目标存储空间,都会在AHB总线上执行。存储器的组织采用了ARMv8M结构,预先定义的存储器映射和高达4 GB的存储空间,充分保证了系统的灵活性和可扩展性。
Cortex?-M23处理器是一个低功耗32位处理器。适用于需要一个区域优化处理器来进行深度嵌入式应用的场景。Cortex?-M23处理器为开发人员提供了显著的好处,包括:
l 一个简单的体系结构,易于学习和编程; l 超低功耗、高效节能; l 优秀的代码密度; l 确定性、高性能中断处理; l 向上兼容Cortex-M处理器家族系列;
GD32E231系列器件的优点有 l 开发板小巧且集GD-LINK仿真器于一身,支持在线仿真 l 外设丰富能满足基本开发 l 开发相较于STM32单片机来说难度更小,功能却基本相近,性能不减 l 相较于51单片机来说,功能更丰富,处理器速度更高
三、 方案介绍+ + 方案系统框图 方案介绍:利用外设PWM输出方波,通过按键控制方波的高电平占空比,从而控制其输出的电压来调节直流电机的转速。 用到的外设有:TIMER0高级定时器、PWM、GPIO
四、 照片示例和功能的实现
说明: 如图(2)KEY1、KEY2的功能分别是 增加输出的PWM的高电平占空比,和降低高电平占空比。通过按KEY1,KEY2键分别达到直流电机升速降速目的。图(2)中,PWM输出高电平占空比被调节到最小,LED1亮(占空比最低指示灯),电机的供给电压达最小,电机停止工作。图(3)中PWM输出高电平占空比被调节到最大,LED2亮(占空比最高指示灯),电机的供给电压达最大,电机工作速度最大。
(图一)
五、代码分享
部分代码: void Power_UP(void) { //PWM 占空比加按键 if(0 == gpio_input_bit_get(GPIOA, GPIO_PIN_5)) { delay_1ms(100); if(0 == gpio_input_bit_get(GPIOA, GPIO_PIN_5)) {
if(i_kcl!=100) i_kcl=i_kcl+10;
if(i_kcl==100) gpio_bit_set(GPIOA,GPIO_PIN_2); else gpio_bit_reset(GPIOA, GPIO_PIN_2);
if(i_kcl==0) gpio_bit_set(GPIOA,GPIO_PIN_1); else gpio_bit_reset(GPIOA, GPIO_PIN_1);
} while(0 == gpio_input_bit_get(GPIOA, GPIO_PIN_5)); } } void Power_DOWN(void) { //PWM 占空比减按键 if(0 == gpio_input_bit_get(GPIOA, GPIO_PIN_6)) { delay_1ms(100); if(0 == gpio_input_bit_get(GPIOA, GPIO_PIN_6)) {
if(i_kcl!=0) i_kcl=i_kcl-10; if(i_kcl==0) //当i_kcl=0时,让i_kcl不再增加;以免溢出以免溢出,开启最小值示意灯 gpio_bit_set(GPIOA,GPIO_PIN_1); else gpio_bit_reset(GPIOA, GPIO_PIN_1);
if(i_kcl==100) gpio_bit_set(GPIOA,GPIO_PIN_2); else gpio_bit_reset(GPIOA, GPIO_PIN_2);
} while(0 == gpio_input_bit_get(GPIOA, GPIO_PIN_6)); } } int main(void) {
i_kcl=0; FlagStatus breathe_flag = SET;
/* configure the GPIO ports */ gpio_config();
/* configure the TIMER peripheral */ timer_config();
/* configure systick */ systick_config();
while (1) { Power_UP();
Power_DOWN(); /* configure TIMER channel output pulse value */ timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_1,i_kcl);
}
} 来自理想
|
|||
Y一ang
2
主题
22
回复 |
发表于2019-05-19 15:35:19
|
只看该作者
2#
能打包个整个工程?可怜我连官方demo都编译不了
|
|||
LIXIANG
1
主题
4
回复 |
发表于2019-05-21 16:29:37
|
只看该作者
4#
分享里的头文件有
来自理想
|
|