stm32c8t6之跑马灯程序配置

前提:正点原子的stm32f103RCT6 容量大小256kb
实际使用的是stm32f103c8t6 容量大小64kb

启动文件的选择

ST 公司提供了 3 个启动文件给我们,分别用于不同容量的 STM32 芯片,这三个文件是:
startup_stm32f10x_ld.s
startup_stm32f10x_md.s
startup_stm32f10x_hd.s
其中,ld.s 适用于小容量 产品;md.s 适用于中等容量产品;hd 适用于大容量产品

启动文件的一点小修改

不过这个启动文件,我们做了一点点修改,具体是 Reset_Handler 函数,该函数修改后代码
如下:

Reset_Handler PROC
 EXPORT Reset_Handler [WEAK]
 IMPORT __main
;寄存器版本代码,因为没有用到 SystemInit 函数,所以注释掉
;库函数版本代码,建议加上这里(外部必须实现 SystemInit 函数),以
;初始化 stm32 时钟等。
 ;IMPORT SystemInit
 ;LDR R0, =SystemInit
 ;BLX R0 
 LDR R0, =__main
 BX R0
 ENDP

这段代码,我们屏蔽了复位中断服务函数(Reset_Handler)对函数 SystemInit 的调用,如
果是库函数版本,可以取消这个函数的注释,并在外部实现 SystemInit 函数。

sys.h和sys.c是由正点原子提供

sys 文件夹内共 5 个文件:sys.c、sys.h、stm32f10x.h、system_stm32f10x.h 和 core_cm3.h。
**其中sys.c和sys.h是由ALIENTEK提供,**我们将重点介绍。而其他三个文件则是拷贝自STM32F1
的 CMSIS 库文件,主要包含了 STM32F1 的寄存器定义、位定义以及内存映射等,我们的代码
里面需要用到这些内容,所以直接拷贝过来即可

个人总结

  1. 查了很多博客还有《cortex-cm3权威指南》这一本书,基于cm3内核的寄存器映射等,应该都是一样的!

  2. 正点原子的sys.c和sys.h好像只是,具体的实现了位带的操作!以后看到详细的作用还会继续补充,也欢迎各位网友给出指导意见!

  3. 具体操作中忘记了相应的io口的配置,导致程度烧录的不如预期!没有配置时钟使能,设置相应的io口为推挽输出!

没有搞清楚的知识点

  1. 选错了芯片会造成什么影响

在这里插入图片描述

  1. 其二文件的配置为什么要这样配置?

指导内容在《stm32不完全寄存器手册》中有,但是为什么这样配置有点百思不得其解!

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值