7538|27

932

帖子

3

TA的资源

纯净的硅(中级)

楼主
 

GD'32学习历程 [复制链接]

 
    退休之后,重新拾起年轻时的爱好,着手做了一个小水电站自动控制的项目,计划第一步是根据来水量自动控制水轮发电机组的进水阀门,达到充分利用水能的效率。小水电站控制屏上有个小转轮,人工转动小转轮来调节进水阀门,我用了一个小直流电机来带动转轮,通过控制小电机正反转来调节进水阀门。
    水位监测部分采用了超声波测距的方式,用51单片机控制,将检测到的数据传送到机房,数据传输采用无线方式,用433M的数据收发模块。目前水位监测部分已经完成,无线传输部分正在调试过程中。
    考虑到以后扩展需要AD转换,机房的控制
部分就没有继续使用51单片机,准备换用32位单片机,恰好论坛开展兆易公司GD32F350的创新设计大赛活动,我报了名并有幸入围。在此之前我就通过网上的视频学习SMT32系列单片机的教程,下载并安装好了IAR7.X,在论坛下载了版主的例程后发现我的IAR版本较低,打不开工程文件,于是便设法升级版本,在网上找了一圈没有合适的,又准备换用keil的MDK,岂知我反复安装了6~7次,keilMDK与keil51之间冲突,MDK偶尔才能启动,多数情况下点击进入启动窗口,窗口消失后就无任何反映,折腾了6~7天都无结果。收到开发板后我心情更加着急,好在有坛友介绍使用keil5,在官网下载并安装好之后,下载破解软件又遇到麻烦,先后下载了两个所谓的破解软件,都是挂羊头卖狗肉的,真正需要的破解程序没有,却被强塞了7~8个诸如X奇艺、快X、XX管家等等我不喜欢的软件,为了将这些“流氓”请出去,我又是卸载、又是动用任务管理器、外加直接删除文件夹,十八般武艺全用上,先后两次都是如此操作,害得我现在只好使用未破解的程序,反正目前还不会突破限制。

    经历过近半个月的折腾,目前电脑上keil51和keilMDK已经安然并存,互不影响,32位机的开发环境已经基本就绪,可以进入代码编写进程了。第一步是准备驱动LCD5110显示屏,之所以没有先去点亮LED,是因为显示屏比LED更直观,而且显示屏也是我这个项目的重要组成部分。等显示屏点亮
之后再向各位汇报。

此帖出自GD32 MCU论坛

最新回复

致敬老工程师  详情 回复 发表于 2018-11-6 15:03
点赞 关注(1)
 

回复
举报

16

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
致敬老工程师~! 向老司机学习!
此帖出自GD32 MCU论坛

点评

我仅仅是年纪大的新学生而已,仅管二十年前就买了8051单片机的书籍,但实际工作与电子无关,真正接触单片机还是前年,买了一个普中的开发板,从51单片机开始入手,基本了解了51单片机,现在刚开始学习32位单片机,希  详情 回复 发表于 2018-8-30 11:34
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

板凳
 
swordroo 发表于 2018-8-30 10:49
致敬老工程师~! 向老司机学习!

我仅仅是年纪大的新学生而已,仅管二十年前就买了8051单片机的书籍,但实际工作与电子无关,真正接触单片机还是前年,买了一个普中的开发板,从51单片机开始入手,基本了解了51单片机,现在刚开始学习32位单片机,希望在此得到大家的指教,谢谢!
此帖出自GD32 MCU论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

4
 
向你学习
此帖出自GD32 MCU论坛
 
 
 

回复

7671

帖子

2

TA的资源

五彩晶圆(高级)

5
 
向老司机致敬!老工程师基础扎实的令人发指,希望老司机多多来社区指导。
此帖出自GD32 MCU论坛
 
 
 

回复

1371

帖子

6

TA的资源

版主

6
 
向老工程师致敬!
此帖出自GD32 MCU论坛
 
个人签名专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

7
 
感谢各位厚爱,我是来学习的,真诚地希望得到大家的帮助,让我尽快入门。
此帖出自GD32 MCU论坛
 
 
 

回复

3243

帖子

0

TA的资源

纯净的硅(高级)

8
 
向老工程师致敬!
此帖出自GD32 MCU论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

5263

帖子

239

TA的资源

管理员

9
 
欢迎欢迎,出现解决不了的问题可以随时来大赛专区交流
此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

10
 
目前我在实验过程中遇到两个问题,请大家帮助解决!
    我使用英文版的keil5MDK,不支持中文,不管是程序还是注释,输入中文全部显示为问号,从其他文件复制粘贴也不行,但是文件中本身存在的中文注释则可以正常显示,我现在只好在记事本里为程序添加注释。
    我的头文件明明与.C文件在同一目录下,但keil提示找不到头文件,这是什么原因?
编译出错:


lcd5110.h明明与.c文件在同一目录下:



此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

11
 
中文录入问题已经解决,在设置里面选择一下就行了。
此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

12
 
本帖最后由 hujj 于 2018-9-4 21:39 编辑

我将项目工程文件从“keil_project"文件夹里移到main.c所在的文件夹后,main.c中能添加头文件了,可是CMSIS下面的system_gd32f3x0.c里面的头文件又加不进出了。

TIM截图20180904173918.jpg (176.4 KB, 下载次数: 0)

TIM截图20180904173918.jpg
此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

13
 
楼上的图片发错了,重发图片:

此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

14
 
  继续解决头文件无法添加的问题:
上网搜索,有人说路径不能有中文或数字开头,在我的相对路径中没有中文,但有数字开头的文件夹,于是我修改了文件夹名称,再试仍然不行;
  初步分析应该是路径问题,于是我将.c文件和.h文件都移到项目文件同一文件夹里,还是不行。
  偶然发现在添加的多个头文件,始终是第一个出现红“X”,将出现红“X"的头文件注释掉,下一行又会出现红”X",忽然心里一亮,咱惹不起还躲不起吗!于是新建一个同样内容不同名字的头文件,绕过了这条坎。

多个添加的头文件,只有首行的出问题:


将出问题的行注释掉之后,下一行就会出问题:


灵机一动,建了两个相同内容不同名字的头文件,绕过了这个问题:


最后查看,这两个头文件应该都包含进去了,反正有if语句,不会出现重复定义的现象。



首个头文件找不到0.jpg (71.82 KB, 下载次数: 0)

首个头文件找不到0.jpg
此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

15
 
本帖最后由 hujj 于 2018-9-6 09:33 编辑

完成主控设备屏幕显示界面。
    将原来在51单片机下的LCD5110驱动程序移植过来之后,开始进行调试,照例用逻辑分析仪来抓取LCD5110相关引脚的时序,连接好逻辑分析仪(见下图)



    在电脑上观看各引脚的时序(见下图),由于我的上网本屏幕太小,因此外接了液晶显示屏



    一看时序一头雾水,根本不是我在程序中控制的时序,反复检查程序代码也找不到原因,最后检查板的扩展接口才发现原来我选用的接口与开发板通讯口重复了,见下图



    我原先用PB10~PB14五个引脚来控制LCD5110,岂料与开发板上的SPI2冲突了,所以逻辑分析仪抓取的时序看不明白,只怪我没有仔细看参考资料,于是我改用PB2~PB6五个引脚来控制LCD5110,之所以没有选用PB0和PB1,完全是因为参考资料上标注了不同的颜色,而PB2~PB6正好连在一起。


   
    重新接过了LCD5110的引脚,修改了程序中相关的引脚定义,下载程序开机测试,程序顺利通过,达到了预期的目的,见下图:





    至此,主控设备屏幕界面设计顺利完成!
   


LCD5110引脚安排(新).jpg (92.45 KB, 下载次数: 0)

LCD5110引脚安排(新).jpg
此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

16
 
    在测试过程中还遇到一个问题:我的字模数据原来在51单片机中是通过code命令将其存放在代码区的,可是在MDK中code命令出错,我只好暂时先放在RAM中,反正目前还不会引起RAM不够用。
    另外厂家配送的数据线质量确实太差,现在就经常出现连接不好,电脑无法识别的现象,不知各位是否也遇到过。
此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

17
 
供用户设置的外部拨码开关调试完成。

    在我的项目中,需要用户根据实际情况设置标准水位和允许偏差两个数值,实际水位在允许偏差范围内变动时,水轮发电机组不作任何调整,超出允许偏差范围时才自动控制开大或者关小进水闸门。
    外部设置是通过拨码开关实现,将拨码开关接在单片机的IO引脚上,程序读入设置的数据,但这个看似简单的事项却困绕了我几天。
    首先我选择了空闲的PC端口连接拨码开关,开户PC端口的时钟、将PC0~PC6(程序中只需要4+3共7个引脚)设置为输入模式和上拉电阻方式,然后从高到低逐位读入引脚状态并转换成数值,同时将设置数据显示在屏幕上。
测试结果全为0,无论拨码开关如何设置均无反映,程序没有达到预期的目的。
    我首先怀疑转换程序有问题,于是我修改成逐位判断引脚状态,然后根据状态来计算数值,测试结果仍不成功,显然是程序没有读到IO引脚的状态,于是我发帖求助,见https://bbs.eeworld.com.cn/thread-925982-1-1.html。经过版主和坛友的提示,参照一些范例,我将引脚设置AF模式和上拉或下拉等方式,仍然读不到设置的数据,这一折腾就两天过去了。万般无奈,我尝试改用PB的空闲引脚来接拨码开关,发现可以读到数据。由于PB端口空闲的引脚有限,于是我将原来接在PB端口的LCD5110改接在PC端口上,空出PB引脚来接拨码开关,此时可以读到设置的数据了。同样设置,为什么在PB端口可以读到数据,在PC端口却读不到数据,这个问题至今仍在困绕着我。
    能读到数据并不代表成功了,我发现读入的数据在不断地变化,不能稳定地反映拨码开关设置的状态。我用数字万用表来测量引脚的输出电压,发现在上拉电阻状态下(即拨码开关断开),引脚的电压在0.8~1.2V,远没有达到数据手册给出的高电平1.68~2.11V,我判断也许是单片机的上拉能力弱,于是我将引脚改设置为下拉电阻方式,测试后发现低电平时引脚电压也在0.8~1.2V左右,高出数据手册的0.18~0.54V。换句话说,单片机的上拉和下拉的能力都很弱,不能提供稳定的电平信号,我不知道这是个例还是通病。也不清楚其他坛友是否也遇到这个问题。
    左思右想,我只好通过外接上拉电阻的方式来解决这个问题,在拨码开关板上加装了排阻,接线跳线后测试,程序完全达到了预期目的,能够正常的设置和显示数据了。








此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

18
 
下面是端口配置的代码:
void port_C_Config(void)
{
    rcu_periph_clock_enable(RCU_GPIOB);
    gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_PULLUP,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
       
}

下面是读入引脚数据的代码:
/***********************************************************
*  读取设置的标准水位(stan)、偏差(devi)数据
*  单位:分米
***********************************************************/
void get_set(void)
{
    //计算设置的标准水位高度(D3~D0)
    stan = gpio_input_bit_get(GPIOB,GPIO_PIN_3);
        stan = (stan * 2) + gpio_input_bit_get(GPIOB,GPIO_PIN_2);
    stan = (stan * 2) + gpio_input_bit_get(GPIOB,GPIO_PIN_1);
        stan = (stan * 2) + gpio_input_bit_get(GPIOB,GPIO_PIN_0);
       
        stan = (stan * 5) + 20;           //0.5米一个单位,从2米基点算起

    //计算设置的允许偏差(D6~D4)
    devi = gpio_input_bit_get(GPIOB,GPIO_PIN_6);
        devi = (devi * 2) + gpio_input_bit_get(GPIOB,GPIO_PIN_5);
        devi = (devi * 2) + gpio_input_bit_get(GPIOB,GPIO_PIN_4);

    devi = (devi *2) + 2;             //0.2米一个单位,从0.2米算起
}
此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

19
 
    晕死!搞了一整天,还没有驱动成LED灯。
    输出控制部分准备用成品的四位微型继电器组,调试的过程中就打算先用LED替代。开始准备用PC端口的0~3脚,配置代码如下:
    rcu_periph_clock_enable(RCU_GPIOC);
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
                      GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ,
                                GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
    然后在main函数中用
    gpio_bit_set(GPIOB,GPIO_PIN_0);
    delay_1ms(1000);
    gpio_bit_reset(GPIOB,GPIO_PIN_0);
但LED灯不亮,测量引脚的电压并未发现明显变化。后来改用空闲的PB7和PB11引脚,也同样无效,反复检查程序和连线,实在找不出问题所在,只好暂时用板载的三个用户LED灯(即PB8~PB10引脚)代用。


此帖出自GD32 MCU论坛
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

20
 
成功“傍大款”:
    开发板上的三个用户LED分别接在PB8~10引脚上,我搜索到有关LED设置的地方悉数添加上LED4,对应引脚为PB11,终于添加了一个LED4,原来准备在PB7引脚上也添加一个LED的,后来发现这个引脚是接USER_KEY的,只好作罢。
此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表