OpenEdv-开源电子网

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

u16*类型如何转化成u16类型,百度没查到

[复制链接]

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
发表于 2021-6-9 15:01:53 | 显示全部楼层 |阅读模式
10金钱
u16*类型如何转化成u16类型,百度没查到

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

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4096 小时
发表于 2021-6-9 15:05:18 | 显示全部楼层
专治疑难杂症
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:12:21 | 显示全部楼层
LcwSwust 发表于 2021-6-9 15:05
百度 强制类型转换

没找到合适的
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:23:24 | 显示全部楼层
LcwSwust 发表于 2021-6-9 15:05
百度 强制类型转换

老哥,帮忙给个转换程序吧,太折磨人了
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4096 小时
发表于 2021-6-9 15:24:20 | 显示全部楼层

为啥说不合适?编译不过?
专治疑难杂症
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:27:25 | 显示全部楼层
LcwSwust 发表于 2021-6-9 15:24
为啥说不合适?编译不过?

没有u16*转u16的,没找到
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 15:27:34 | 显示全部楼层
这俩有啥好转换的?
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:28:53 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:27
这俩有啥好转换的?

程序编译不过去,需要把格式统一
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:30:39 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:27
这俩有啥好转换的?
  1.   STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,2);
  2.          PWM_control(datatemp);
复制代码

编译不过去
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 15:32:40 | 显示全部楼层
支持者2400 发表于 2021-6-9 15:28
程序编译不过去,需要把格式统一

程序编译不过去,估计是你写的代码逻辑有问题。
极少数情况下,指针类型变量才需要与普通类型变量转换
如果不用保密的话,可以把代码放出来让大家给你下建议
学无止境
回复

使用道具 举报

12

主题

3389

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8643
金钱
8643
注册时间
2020-5-11
在线时间
4096 小时
发表于 2021-6-9 15:33:24 | 显示全部楼层
支持者2400 发表于 2021-6-9 15:27
没有u16*转u16的,没找到

没找到,难道还不会举一反三了?
专治疑难杂症
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:34:10 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:32
程序编译不过去,估计是你写的代码逻辑有问题。
极少数情况下,指针类型变量才需要与普通类型变量转换
...

别的没有问题,就是上面是u16*,下面是u16,屏蔽这两条,程序可以运行的
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 15:34:10 | 显示全部楼层

把你读flash和控制pwm的函数放出来看看
学无止境
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 15:34:57 | 显示全部楼层

STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,2);

改成 &datatemp试试
学无止境
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:36:38 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:34
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,2);

改成 &datatemp试试
  1. void STMFLASH_Read(u32 ReadAddr,u16 *pBuffer,u16 NumToRead)          
  2. {
  3.         u16 i;
  4.         for(i=0;i<NumToRead;i++)
  5.         {
  6.                 pBuffer[i]=STMFLASH_ReadHalfWord(ReadAddr);//&#182;áè&#161;2&#184;&#246;×&#214;&#189;ú.
  7.                 ReadAddr+=2;//&#198;&#171;ò&#198;2&#184;&#246;×&#214;&#189;ú.       
  8.         }
  9. }
  10. void PWM_control(u16 x)
  11. {

  12.                TIM_SetCompare1(TIM1, x);                            //TIM1_CH1    PA8
  13.         TIM_SetCompare2(TIM1, x);                                //TIM1_CH2    PA9
  14.         TIM_SetCompare3(TIM1, x);                                //TIM1_CH3    PA10
  15.         TIM_SetCompare4(TIM1, x);                                //TIM1_CH4    PA11

  16.         TIM_SetCompare1(TIM2, x);                                //TIM2_CH1          PA0
  17.         TIM_SetCompare2(TIM2, x);                                //TIM2_CH2    PA1
  18.         TIM_SetCompare3(TIM2, x);                                //TIM2_CH3    PA2
  19.         TIM_SetCompare4(TIM2, x);                                //TIM2_CH4    PA3

  20.         TIM_SetCompare1(TIM3, x);                           //TIM3_CH1          PA6
  21.         TIM_SetCompare2(TIM3, x);                                //TIM3_CH2    PA7
  22.         TIM_SetCompare3(TIM3, x);                                //TIM3_CH3    PB0
  23.         TIM_SetCompare4(TIM3, x);                                //TIM3_CH4    PB1

  24.         TIM_SetCompare1(TIM4, x);                                //TIM4_CH1     PB6
  25.         TIM_SetCompare2(TIM4, x);                                //TIM4_CH2     PB7
  26.         TIM_SetCompare3(TIM4, x);                                //TIM4_CH3     PB8
  27.         TIM_SetCompare4(TIM4, x);                                //TIM4_CH4     PB9

  28. }
复制代码
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:37:02 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:34
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,2);

改成 &datatemp试试

不行啊,出现两个错误了
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 15:42:40 | 显示全部楼层
支持者2400 发表于 2021-6-9 15:37
不行啊,出现两个错误了

那是你自己问题了,按照我说的绝对不会错,而且我已经浪费两分钟验证了
学无止境
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 15:45:09 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:42
那是你自己问题了,按照我说的绝对不会错,而且我已经浪费两分钟验证了

老哥,你把你改的程序发上来倍
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 15:59:59 | 显示全部楼层
支持者2400 发表于 2021-6-9 15:45
老哥,你把你改的程序发上来倍

没什么发的,基础C语言   你自己查查你哪边是不是敲错了,中英文字符
学无止境
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 16:09:33 | 显示全部楼层
jermy_z 发表于 2021-6-9 15:59
没什么发的,基础C语言   你自己查查你哪边是不是敲错了,中英文字符

没有啊
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 16:18:05 | 显示全部楼层

你把你工程放上来吧   
学无止境
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-9 16:37:41 | 显示全部楼层
jermy_z 发表于 2021-6-9 16:18
你把你工程放上来吧

放不上来了,主要就是这两条语句的转化
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-9 16:40:51 | 显示全部楼层
支持者2400 发表于 2021-6-9 16:37
放不上来了,主要就是这两条语句的转化

那就算喽  自己找原因吧

按照我说的做,是没问题的
学无止境
回复

使用道具 举报

10

主题

205

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1322
金钱
1322
注册时间
2015-3-3
在线时间
127 小时
发表于 2021-6-10 09:34:35 | 显示全部楼层
如果该为&datatemp还有问题,那就属实你自身问题,自己慢慢消化吧。
海纳百川者,荣耀伴一生!
回复

使用道具 举报

23

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2015-7-14
在线时间
76 小时
发表于 2021-6-10 09:42:50 | 显示全部楼层
u16*是指针啊,u16是普通数据,这俩你怎么转换。你把指针转成普通数据当然不对啊
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-10 09:54:26 | 显示全部楼层
Azer 发表于 2021-6-10 09:42
u16*是指针啊,u16是普通数据,这俩你怎么转换。你把指针转成普通数据当然不对啊

怎么改比较合适呢?
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-10 10:02:18 | 显示全部楼层
shumivan 发表于 2021-6-10 09:34
如果该为&datatemp还有问题,那就属实你自身问题,自己慢慢消化吧。

改成  STMFLASH_Read(FLASH_SAVE_ADDR,&datatemp,SIZE);       
         PWM_control(datatemp);
出现两个错误
main.c(32): error:  #167: argument of type "u16 (*)[2]" is incompatible with parameter of type "u16 *"
     STMFLASH_Read(FLASH_SAVE_ADDR,&datatemp,SIZE);
main.c(34): error:  #167: argument of type "u16 *" is incompatible with parameter of type "u16"
         PWM_control(datatemp);
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-10 10:10:24 | 显示全部楼层
shumivan 发表于 2021-6-10 09:34
如果该为&datatemp还有问题,那就属实你自身问题,自己慢慢消化吧。

已经教他了,他自己估计也是瞎改。工程还当宝贝似的不愿意放上来,那就只能他自己慢慢搞定了
学无止境
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-10 10:12:31 | 显示全部楼层
jermy_z 发表于 2021-6-10 10:10
已经教他了,他自己估计也是瞎改。工程还当宝贝似的不愿意放上来,那就只能他自己慢慢搞定了

那啥,老哥,我不是当宝贝,别误会,我新开一个贴,发压缩包,你帮我看看呗
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-10 10:17:55 | 显示全部楼层
支持者2400 发表于 2021-6-10 10:12
那啥,老哥,我不是当宝贝,别误会,我新开一个贴,发压缩包,你帮我看看呗

你一个问题  开了好几个贴,有意义?
学无止境
回复

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2021-6-10 10:19:41 | 显示全部楼层
jermy_z 发表于 2021-6-10 10:17
你一个问题  开了好几个贴,有意义?

实在弄不懂啊
回复

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2021-6-10 11:16:51 | 显示全部楼层
32位芯片里指针变量是32位的,整数转成指针要先转成32位,比如这样
(uint16_t *)((uint32_t)datatemp)
当然这个只是语法上跑的通,具体场合该不该这么用需要你自己根据上下文的逻辑来判断
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-6-10 12:22:35 | 显示全部楼层
我觉得重要的问题没交待, datatemp是啥?它的定义?
回复

使用道具 举报

12

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2294
金钱
2294
注册时间
2016-5-21
在线时间
954 小时
发表于 2021-6-10 13:13:51 | 显示全部楼层
如果datatemp是数组,STMFLASH_Read(FLASH_SAVE_ADDR,datatemp,SIZE);或者STMFLASH_Read(FLASH_SAVE_ADDR,&datatemp[0],SIZE);都可以,如果不是数组,把变量定义成数组,u16 datatemp[10];
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-10 23:46:59 | 显示全部楼层
你是打算怎么存储数据?u16*和u16,你想转换什么,具体问题具体分析。
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2021-6-11 08:25:46 | 显示全部楼层
都不是一类东西怎么转换?    赶紧去学学C指针  
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 16:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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