2349|1

165

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

使用HAL库点灯 [复制链接]

 
本帖最后由 EETUX 于 2018-7-6 10:08 编辑

因为须要使用到符号表,首先重新编译micropython固件
顺便修改makefile,移除-fdata-sections -ffunction-sections选项,
-fdata-sections -ffunction-sections 配合 --gc-sections 会删除未被使用的函数。

后果就是固件体积会大些。(把--gc-sections也拿掉编不过......)

获得相关库函数地址
可以用readelf

可以看.map文件

或者用ida
等等
忽略地址最后一位,应该都是一样的

下面写段代码,实现传参与跳转
  1. @micropython.asm_thumb
  2. def F(r0,r1,r2,r3):
  3.         data(2,0x4798)
  4.         align(2)
  5.         
  6. HAL_GPIO_WritePin_FuncAddr = 0x0804f7d4
  7. HAL_GPIO_TogglePin_FuncAddr = 0x0804f7de
  8. HAL_GPIO_ReadPin_FuncAddr = 0x0804f7c8
  9. def PY_HAL_GPIO_WritePin(GPIO_TypeDef_Addr, GPIO_Pin, PinState):
  10.         F(GPIO_TypeDef_Addr,GPIO_Pin,PinState,HAL_GPIO_WritePin_FuncAddr|1)
  11. def PY_HAL_GPIO_TogglePin(GPIO_TypeDef_Addr, GPIO_Pin):
  12.         F(GPIO_TypeDef_Addr,GPIO_Pin,0,HAL_GPIO_TogglePin_FuncAddr|1)
  13. def PY_HAL_GPIO_ReadPin(GPIO_TypeDef_Addr, GPIO_Pin):
  14.         return F(GPIO_TypeDef_Addr,GPIO_Pin,0,HAL_GPIO_ReadPin_FuncAddr|1)
复制代码

具体细节没有研究,看上去是可以工作的
测试如下:









此内容由EEWORLD论坛网友EETUX原创,如需转载或用于商业用途需征得作者同意并注明出处



查看本帖全部内容,请登录或者注册

cat_map.png (24.37 KB, 下载次数: 0)

cat_map.png

ida.png (17.35 KB, 下载次数: 0)

ida.png

test.png (14.24 KB, 下载次数: 0)

test.png

最新回复

也可以直接访问寄存器 import stm # LED1/PA13 LED1 = 13 stm.mem16[stm.GPIOA+stm.GPIO_BSRRL]|=(1<<LED1) # LED4/PB4 LED4 = 4 stm.mem16[stm.GPIOB+stm.GPIO_BSRRL]|=(1<<LED4) 复制代码  详情 回复 发表于 2018-7-6 14:37
点赞 关注
 
 

回复
举报

1万

帖子

24

TA的资源

版主

沙发
 
也可以直接访问寄存器

  1. import stm

  2. # LED1/PA13
  3. LED1 = 13
  4. stm.mem16[stm.GPIOA+stm.GPIO_BSRRL]|=(1<<LED1)

  5. # LED4/PB4
  6. LED4 = 4
  7. stm.mem16[stm.GPIOB+stm.GPIO_BSRRL]|=(1<<LED4)
复制代码
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【回帖赢京东卡】说说无线技术那些事儿
即日起—2月28日,参与回帖讨论都有机会赢取【30元京东卡】

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表