【AT-START-F423测评】 + 雅特力A32F423测试IIC-OLED刷新速度之定时器篇

 本次评测准备以两种方式测试OLED显示屏的显示刷新速度。一种是非DMA方式传递显示数据,一种是以DMA方式喜欢滴显示数据。作为另一个对比,一个是采用片内IIC外设方式处理显示,另一个是以IO口模拟方式。OLED使用常见的那种0.96英寸的128*64点阵的OLED。为了搭建整个测试工程,我们先一步一步来,先建立一个能产生1秒中断的工程。依旧使用雅特力的Work Bench来创建基于雅特力IDE的工程。
首先我们使用IO模拟IIC、非DMA方式,来处理OLED的显示。根据芯片的封装,
 


使用PC2和PC3来模拟IIC通讯,在这两个IO口的旁边是I2C3外设,方便以后作为对比用。PC2模拟SCL,PC3模拟SDA。由于IIC设备中SDA是开漏设计,连接线路的时候需要上拉电阻,所以PC3口和PC2口一样,都设计为设计为上拉电阻模式。PD13是用来驱动板载LED2用的IO口。
 


为了测试刷新速度,需要加入定时器。通过定时器中断获取1秒的计时单位,统计刷新OLED显示的次数,来计算刷新速度。因此需要实现定时器1的溢出中断。
 


使用Work Bench配置定时器1的设置时,还是摸索着弄,对不对也不知道。边学习边上吧。有错了,后面再改好了。
为了能及时反馈中间的处理信息,加上串口输出,也很有必要。因此再加上一个串口,并配置串口中断功能。
 


因为是需要发送,不处理接收。因此只设置TXD,使用PA9。设置已经完成,生成工程代码。
 


确定,生成工程代码。
然后使用雅特力的IDE导入这个工程。
在代码总加了一个全局标志变量gi_flag_1s,用来检查是否发生了秒中断。当秒中断发生时,翻转LED显示,因此这个LED的闪烁周期应该是两秒。
在生成的的代码中,在at32f423_wk_config.c文件中的wk_tmr1_init函数中在tmr_counter_enable处理代码的后面要加一行代码:

复制

tmr_interrupt_enable(TMR1, TMR_OVF_INT, TRUE);


这行代码的作用,如函数名所示,是启动定时器1的溢出中断。没有这行代码,你的程序启动起来,定时器不会发生中断。
在中断处理函数TMR1_OVF_TMR10_IRQHandler中,追加以下代码:

复制

 if(tmr_flag_get(TMR1, TMR_OVF_FLAG) == SET) {

    gi_flag_1s = 1;



    // 清除溢出标志

    tmr_flag_clear(TMR1, TMR_OVF_FLAG);

}



这段代码的作用是,在定时器产生了溢出中断时,建立1秒钟中断发生标志。为什么是一秒呢,因为我们在最初设计的时候,通过Work Bench已经设置好了参数,在初始化设置代码

复制

tmr_base_init(TMR1, 14999, 9999);


中也能看到这个设置。
为了验证秒中断是否能发生,在main.c中的主循环处理中,我们加入以下代码:

复制

if (gi_flag_1s) {

    // 发生了1秒中断,清除标志,翻转LED2

    gi_flag_1s = 0;

    gpio_bits_toggle(LED_PIN_GPIO_PORT, LED_PIN_PIN);

}


现在我们可以测试一下了。用USB电缆连接好电脑和开发板,建立程序运行设置(具体步骤可以参照我之前发过的用Work Bench建立ATIDE工程的那个帖子)

85f1d2e38cb4b6bcc6d3f247d8423876 (61.48 KB )

下载附件

2023-10-27 10:08 上传


点击“RUN”。好了,现在我们可以欣赏LED以2秒周期的频率闪烁了。该说不说,使用Work Bench设置定时器,改变参数,可以直接看到计算结果,实在是太方便了。而且是中文界面,这可比看示例代码中的英文注释简单多了。
到这里,定时器的准备工作完成,下一步我们把OLED的相关处理代码移植进工程中,进行测试。。
---------------------
作者:suncat0504
链接:https://bbs.21ic.com/icview-3336164-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值