OpenEdv-开源电子网

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

超级新手求问,怎样才在MDK中可以使用C++写程序?

[复制链接]

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
发表于 2018-3-10 16:07:27 | 显示全部楼层 |阅读模式
2金钱
这几天刚刚上手stmf1系列,因为以前只学过c++,所以当我看到视频里教程都是用C 语言感觉有点不适应,而且固件库里面的库函数貌似都是用C语言来定义的。已经知道了MDK其实是可以用C++的,想问下可以在库函数的版本下C++和C混用吗?那如果只用C++写程序的话固件库是不是也应该换成C++的版本?最后上个串口实验中用C++加的一段代码,想发送一个数字,接受的是这个数字+1,不知道哪里出错了,望解答,谢谢!

捕获.PNG 1.PNG

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
发表于 2018-3-10 16:19:34 | 显示全部楼层
本帖最后由 学习stm32f4 于 2018-3-10 16:22 编辑

搞单片机开发,目前只听过除c之外的三种平台:
arduino平台的库文件是用c++写的,但是芯片用的是avr,贵,只在创客圈流行。
micropython平台的库是用python写的,用python写程序,芯片是stm32f405,主要面向想用python开发单片机的。
mbed也类似arduino,用c++写库,arm-cortex-m内核的芯片。

单片机,还是老老实实用c吧,资源多,少走弯路。
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-3-10 16:37:27 | 显示全部楼层
学习stm32f4 发表于 2018-3-10 16:19
搞单片机开发,目前只听过除c之外的三种平台:
arduino平台的库文件是用c++写的,但是芯片用的是avr,贵, ...

那想问下我改的那段代码为什么错呢?谢谢!
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-3-10 16:38:32 | 显示全部楼层
你这里发送11,因为点击了发送新行,实际发送出去的是31 31 0D 0A  你在中断中对每一个字节加1发送回来的就是32 32 0E 0B  
回复

使用道具 举报

25

主题

103

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-3-10
在线时间
66 小时
 楼主| 发表于 2018-3-10 16:41:01 | 显示全部楼层
BYJ 发表于 2018-3-10 16:38
你这里发送11,因为点击了发送新行,实际发送出去的是31 31 0D 0A  你在中断中对每一个字节加1发送回来的就 ...

不懂为什么会变成31,而且我那里显示的是22
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-3-10 16:50:07 | 显示全部楼层
你点击下串口工具旁边的16进制显示就明白了 去看下ASCII码表
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-3-10 17:02:20 | 显示全部楼层
你如果想做到把发送的数字加1之后再发送回来,应该在中断服务函数外部来操作,参考原子哥的例程,来判断接收完成,然后从数组中取出接收到的数字(即去掉0D 0A)在加1 然后通过串口发送回来
回复

使用道具 举报

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
发表于 2018-3-10 17:08:33 | 显示全部楼层
本帖最后由 学习stm32f4 于 2018-3-10 17:21 编辑

BYJ正确。
上位机和单片机通信,传的是ASCII码。例如,上位机输入1,点击发送,那么,上位机通过串口向单片机发送的是1的ASCII码,即0x31。单片机接收到0x31后,加1,为0x32,单片机通过串口再将0x32返回给上位机,上位机接收到0x32后,会将0x32理解成ASCII的值,即2。我搞不清楚0x0e,0x0b为何会显示成方块。
请多学习原子哥的视频和例程
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
金钱
268
注册时间
2018-2-11
在线时间
53 小时
发表于 2018-3-10 17:30:16 | 显示全部楼层
这个应该是串口工具的原因 0B是垂直制表符  0E是不用切换    凌乱!!
回复

使用道具 举报

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
发表于 2018-3-10 17:32:04 | 显示全部楼层
BYJ 发表于 2018-3-10 17:30
这个应该是串口工具的原因 0B是垂直制表符  0E是不用切换    凌乱!!

多谢。
(括号是凑够六个字)
回复

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2018-3-10 23:14:19 | 显示全部楼层
飞控代码里很多是c++,用keil还是基于c
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2018-3-11 10:24:12 | 显示全部楼层
学会C++再学C不要太简单吧?多会几门编程语言不是很牛么
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-5 16:21:37 | 显示全部楼层
我也在学习如何在MDK中使用C++,可我目前连一个可用的模板都没有。学习了网上的方法,下载到精英版后在启动文件中的__main时不运行了。不知道你的是如何配置环境的,能否把你的程序发一份给我参考,谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 00:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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