找回密码
 注册
关于网站域名变更的通知
查看: 304|回复: 3
打印 上一主题 下一主题

使用flash读写float类型数据时,遇到的问题

[复制链接]
  • TA的每日心情
    开心
    2022-1-21 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2023-1-28 15:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    读写flash,将float类型的数据存放在flash中,
    4 W9 R; F. |5 g3 a  j3 s7 a" A# |, P使用的是联合体操作' _2 I/ L/ {) c7 s4 {7 P
    union var
    0 r7 r8 b5 h5 H2 n, `{
    ! h$ k3 L6 I  A: E+ c& P        float zero_angle;
    ; c/ |% ^" k4 Z4 R- ?        uint32_t s;
    & R2 }6 Y# T+ J) J3 U& d/ u( l- @4 c};  6 q3 _) A; F' G! h' L  {
    * _. M1 `- y1 b/ r

    ! S, }, F) O4 T6 [" o#define FMC_WRITE_START_ADDR    ((uint32_t)0x08004000U); ?2 x: B* o# l- N# h
    void write_page(uint32_t data); k3 R) R+ E* O% a  d
    {; O& \9 V; l5 E- Q" b& r- a* ?
            fmc_unlock();* p# l0 T4 q2 i" X' D/ s! q4 n  n' ^% }
            fmc_page_erase(FMC_WRITE_START_ADDR);
    $ T8 d/ }  v- m" {7 b2 b        fmc_word_program(FMC_WRITE_START_ADDR,data);' p7 J3 W- J; D0 h- d. B
            fmc_lock();
    " a! D0 ?- y9 r. w! r}- r' z* d! |1 F; F
    & m) r8 i5 r: Z6 m( D' P
    //获取float类型的数据
    . z7 J2 w( m; r6 |' gflo_flash.zero_angle = AS5600_ReadAngle(0x0c,0x0d);8 X: b6 A& y; `
    //将数据写入flash
    0 _$ O$ B# }$ Mwrite_page(flo_flash.s);0 L( {; g3 f: H, j  }. g) ~4 S

    & P- z) u1 C+ a" t" S/ a//读取数据
    % e9 ~3 K  }: Y/ i8 sflo_flash.s = (*(volatile uint32_t *)(uint32_t)(FMC_WRITE_START_ADDR));
    & z# m9 z; [5 b* `( U* z
    9 \( w. y! g. K. n3 U以上操作,在没有进行下一步的时候都没问题。0 c0 b8 B/ L6 i9 u& j0 R* r

    # F2 a3 C, \8 n; I- O使用printf函数重定向 打印浮点型数据就会将flash的数据给影响到,
    $ O: \, x1 x* K+ s, j4 m里面的数据就会变成一个不确定的数值,且非常小。
    ! v" t6 D# U. Jprintf("%f\n",a);
    3 j( \+ `6 u& b9 ^" U0 y# c+ j4 c( F$ r* \6 ?9 y
    但是printf 其他类型的数据,就不会受到影响。/ ~5 Y/ y$ M+ [% L! ]5 o
  • TA的每日心情
    开心
    2022-1-29 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2023-1-28 16:13 | 只看该作者
    a是什么?做强制类型转换试试
  • TA的每日心情
    开心
    2022-1-24 15:10
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2023-1-28 16:27 | 只看该作者
    我都是直接强制类型转换,操作简单。
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2023-1-28 16:32 | 只看该作者
    强制类型转换写起来简单。定义union对于老手来说看起来比较啰嗦,但实际上并没有增加代码量,编译器聪明着呢。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-30 04:10 , Processed in 0.140625 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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