SUPER_CRJ 发表于 2021-2-25 00:37:31

TK499纯寄存器之GPIO测试(输出,输入测试)

本帖最后由 SUPER_CRJ 于 2021-2-25 00:44 编辑

本人不喜欢用库写程序。底层的一般都用寄存器。一般的库也就是用来参考下,因为最终都是操作寄存器。
GPIO配置相对比较简单,所以就从GPIO动手。
买的板子附带一个可以直接用jlink调试的程序,所以从这个程序动手,写一个最简单的GPIO程序。
程序目的:定时闪烁LED-(PD8引脚),同时检测按键按下时:LED常亮。

第一步骤:建立工程,如图,具体不表。
由于TK499是M4内核,所以只要移植常用的:cmsis_armcc.h/core_cm4.h...等文件,然后外加:.s启动文件,再加上:tk499.h文件,等等。。

第二步骤:改定义TK499中关于各种寄存器的定义。
看了下:定义没有位模式,而是整个寄存器进行定义。所以改成位模式,由于时间关系,暂时只改了GPIO和RCC时钟控制这一块。
所以改:

第三步骤:
删除。TK499.h文件,一共有4700多行代码。3000多行代码,全都是寄存器位的宏定义值。把这些全删了,因为不用库。
第四个步骤:
对照手册写程序。因为最终的操作都是寄存器,所以打开:TK499的手册:把GPIO时钟配置下,GPIO状态配置下:

最后:
写在while循环里面,一个是LED任务,一个是检测按键。

下载测试:测试成功,LED定时闪烁,同时按下按键,LED常亮!


工程在附件:

SUPER_CRJ 发表于 2021-2-25 00:42:17

另外:咨询下版主,手册中:描述输出能力为:8ma 12ma 16ma驱动能力。请问对应的IO翻转频率能达到多少MHZ(因为之前用STM32,这里面的配置都是对应的频率。)

zmh169 发表于 2021-2-25 14:06:01

技术强迫症{:lol:}加油,超越原版

tiky 发表于 2021-2-27 11:35:31

SUPER_CRJ 发表于 2021-2-25 00:42
另外:咨询下版主,手册中:描述输出能力为:8ma 12ma 16ma驱动能力。请问对应的IO翻转频率能达到多少MHZ( ...

我们的hal库中,把8ma 12ma 16ma对应到ST有2M ,10M ,50M,但是我们建议你一般用12mA(10M速度)这个选项,各项参数是最优解了。

SUPER_CRJ 发表于 2021-2-27 13:00:16

tiky 发表于 2021-2-27 11:35
我们的hal库中,把8ma 12ma 16ma对应到ST有2M ,10M ,50M,但是我们建议你一般用12mA(10M速度)这个选项 ...

还有两个问题:
1:在TK499开发板中,USB接口没有看到1.5K的上拉电阻,同时在手册中,寄存器没有找到关于1.5K上拉电阻的表述。这个上拉电阻是怎么处理的?
2:在手册中:有一处地方说:APB1和APB2最大时钟都是120MHZ,但是在详细寄存器中又说,APB1最大时钟120Mhz,APB2最大时钟60MHZ,到底应该相信哪一个?

冈板日川 发表于 2021-3-14 11:25:59

用寄存器模式可以直接操作写屏不?

SUPER_CRJ 发表于 2021-3-14 15:33:38

冈板日川 发表于 2021-3-14 11:25
用寄存器模式可以直接操作写屏不?

可以的。库最终也是寄存器。
页: [1]
查看完整版本: TK499纯寄存器之GPIO测试(输出,输入测试)