OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11685|回复: 15

用STM32F4探索者开发板做一个计算器(1)

[复制链接]

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-1-26 22:54:45 | 显示全部楼层 |阅读模式
        以前买过STM32F4探索者开发板,空着多时,于是想着怎么玩玩。后来发现原子的例子里好像没有计算器。单片机最基本的功能就是计算,于是做了一个。
先放出界面

效果图

效果图

QQ图片20180126223311.jpg


这个程序,年中的时候开始写,后来有事,一直到最近,觉得不完成对不起自己,于是从新写。
这个东西的难点有两个
1.大数的运算。
    STM32是32位的MCU,超过位数只能自己写算法。我花了一周时间才搞定大数的加减乘除开根。
2.复杂的运算状态转移
    用户操作的可能性太多了,很复杂,整整画了好几张状态机图。
代码量太大了,有个函数居然300多行!我从来信奉函数要短小精悍,功能单一。可是写这个程序,我根本不敢有多少原则,功能实现就已经不错了。
代码就不贴了。
大数算法有兴趣的请下载附件
bignumCalc.zip (6.92 KB, 下载次数: 707)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
 楼主| 发表于 2018-1-26 23:38:11 | 显示全部楼层
还有一个地方,就是原子的触摸驱动需要改个地方,否则会出现问题。
//扫描触摸屏(采用查询方式)
//mode:0,正常扫描.
//返回值:当前触屏状态.
//0,触屏无触摸;1,触屏有触摸
u8 GT9147_Scan(u8 modex)

/*省略*/
//if(mode&0X80&&((mode&0XF)<6))
          {
             temp=0;
             GT9147_WR_Reg(GT_GSTID_REG,&temp,1);//清标志         
          }
/*省略*/


那个条件判断要去掉。这个我调试了很久才发现的。
回复 支持 1 反对 0

使用道具 举报

30

主题

97

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
384
金钱
384
注册时间
2017-5-1
在线时间
63 小时
发表于 2018-1-27 07:51:32 | 显示全部楼层
高,就是高,实在是高。羡慕,学习中
回复 支持 反对

使用道具 举报

95

主题

555

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3346
金钱
3346
注册时间
2016-1-7
在线时间
549 小时
发表于 2018-1-29 12:50:53 | 显示全部楼层
林光华ing 发表于 2018-1-26 23:38
还有一个地方,就是原子的触摸驱动需要改个地方,否则会出现问题。
//扫描触摸屏(采用查询方式)
//mode:0 ...

不错。顶一个。如果加上报语音功能,就完美了。
回复 支持 反对

使用道具 举报

9

主题

62

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2017-8-21
在线时间
172 小时
发表于 2018-1-29 12:58:17 | 显示全部楼层
你这个界面是用什么生成的啊??
回复 支持 反对

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
 楼主| 发表于 2018-1-29 14:59:05 | 显示全部楼层
良性循环 发表于 2018-1-29 12:58
你这个界面是用什么生成的啊??

为了方便移植,没有使用专用的GUI,是直接写的。这个界面代码其实很简单。就几个函数。
回复 支持 反对

使用道具 举报

79

主题

399

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1825
金钱
1825
注册时间
2015-9-21
在线时间
560 小时
发表于 2018-10-30 15:24:06 | 显示全部楼层
你好,目前我也在学习EMWIN,可否分享一下这个的源码!
回复 支持 反对

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-10-30 20:50:56 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2018-8-8
在线时间
29 小时
发表于 2018-11-28 13:24:57 | 显示全部楼层
STM32谢谢
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
852
金钱
852
注册时间
2018-10-11
在线时间
69 小时
发表于 2019-6-4 15:58:03 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-5-30
在线时间
4 小时
发表于 2019-6-5 13:39:55 | 显示全部楼层
楼主,为什么我用探索者的板子下载出现黑屏,没有出现计算器界面?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-7-15
在线时间
0 小时
发表于 2019-7-15 10:20:46 | 显示全部楼层
老哥简单的加减乘除源码可以发我吗谢谢了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2020-1-6
在线时间
0 小时
发表于 2020-1-6 10:01:06 | 显示全部楼层
老哥可以分享一个源码吗?
回复 支持 反对

使用道具 举报

14

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2015-6-7
在线时间
21 小时
发表于 2021-2-15 13:01:13 | 显示全部楼层
大数算法挺棒的,特别是含有浮点数的,找了好多都没找到浮点数的大数算法,学习了大佬的代码发现很多地方临时分配了malloc 但没有释放啊
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2017-5-20
在线时间
30 小时
发表于 2021-3-3 17:07:50 | 显示全部楼层
whyil 发表于 2021-2-15 13:01
大数算法挺棒的,特别是含有浮点数的,找了好多都没找到浮点数的大数算法,学习了大佬的代码发现很多地方临 ...

确实是忘了free,,大意了
不过算法是对的,验证过。
这是我以前账号写的,登陆不了。我现在也看不懂以前写的东西了。感觉以前代码写的不太好。
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2017-5-20
在线时间
30 小时
发表于 2021-3-3 17:19:26 | 显示全部楼层
这是我以前账号写,由于现在无法使用微信登陆,重新申请了账号。

感谢楼上提醒 ,提供的代码里面内存都是忘记free了,这是PC版本,后来移植到STM32已经加上free.还做了其他修改,可惜找不到源码了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 03:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表