[STM8] 请问一下STM8S的C程序里->代表啥意思?

[复制链接]
 楼主| tzsteel 发表于 2014-1-14 16:16 | 显示全部楼层 |阅读模式
C编译器是用COSMIC的,看到软件里很多地方用到了->,有点不太明白.感觉不像是标准C的写法.
003.jpg
杨爱林林 发表于 2014-1-14 16:18 | 显示全部楼层
结构体指针引用成员的表示形式
GERALDWONG 发表于 2014-1-14 17:00 | 显示全部楼层
二楼正解
戈卫东 发表于 2014-1-14 19:42 | 显示全部楼层
找本C语言的书看看?
戈卫东 发表于 2014-1-14 19:44 | 显示全部楼层
用指向结构体的指针,访问结构体的成员。
用C语言的地方都可能出现这种符号,这种用法,不仅仅是STM8S
ADaiPlay 发表于 2014-1-15 09:26 | 显示全部楼层
此贴会火
dragon_hn 发表于 2014-1-15 10:06 | 显示全部楼层
楼主,这就是标准C写法,好好看C语言书吧
 楼主| tzsteel 发表于 2014-1-16 09:07 | 显示全部楼层
杨爱林林 发表于 2014-1-14 16:18
结构体指针引用成员的表示形式

谢谢回复,另请问ADC1->CSR |= Channel;如果不用结构体指针引用成员的形式,直接对寄存器操作行不行?比如 CSR |= Channel;这二者有啥区别?
杨爱林林 发表于 2014-1-16 09:13 | 显示全部楼层
tzsteel 发表于 2014-1-16 09:07
谢谢回复,另请问ADC1->CSR |= Channel;如果不用结构体指针引用成员的形式,直接对寄存器操作行不行?比如 C ...

也不是不可以,但是st把底层寄存器封装好了。。比如adc1指向的结构体中,封装的都是adc相关的寄存器,
你要这样CSR |= Channel;的话,除非自己重新定义寄存器映射,麻烦可想而知
zhangyang86 发表于 2014-1-16 12:58 | 显示全部楼层
tzsteel 发表于 2014-1-16 09:07
谢谢回复,另请问ADC1->CSR |= Channel;如果不用结构体指针引用成员的形式,直接对寄存器操作行不行?比如 C ...

CSR是不嫩直接使用的。。。。
MDK是通过结构体方式来映射的。。。
本质上一样的。
 楼主| tzsteel 发表于 2014-2-5 16:43 | 显示全部楼层
杨爱林林 发表于 2014-1-14 16:18
结构体指针引用成员的表示形式

试了一下->的用法,也不是那么简单,MCU用STM8S003,GPIOA->ODR = 0x00;这样都会报错,如附图请参考。是不是要在软件里安装上特定的I/O口的库文件,才能用GPIOA->ODR ? 用_Bool   LED  @PA_ODR:3; 都是能正常的工作,真想不明白了。
GPIO.jpg
杨爱林林 发表于 2014-2-6 18:07 | 显示全部楼层
你想复杂了。。
只要你定义了结构体,以及对应该结构体的结构体指针
就是可以->用的
你的报错提示是,结构体操作错误。。
->左边必须是结构体指针。。
 楼主| tzsteel 发表于 2014-2-7 17:17 | 显示全部楼层
杨爱林林 发表于 2014-2-6 18:07
你想复杂了。。
只要你定义了结构体,以及对应该结构体的结构体指针
就是可以->用的

我只是想用->对STM8S003的I/O口直接进行操作,还以为ST的底层软件里已定义了I/O口的结构体,那看来是没有啊,否则应该是可以用->了.
 楼主| tzsteel 发表于 2014-2-11 12:04 | 显示全部楼层
请高手帮忙看看,谢谢
frlop 发表于 2014-2-14 15:49 | 显示全部楼层
你该多补点C语言基础。
nienianhong 发表于 2014-2-14 16:12 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

72

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部