打印
[N32G43x]

【N32G435x】定时器试验

[复制链接]
860|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 呐咯密密 于 2021-12-21 15:46 编辑

前言
首先恭喜国民技术入驻21IC,同时感谢国民技术提供测评机会。MCU的功能很多,本人技术有限,摘取部分功能进行测评。
开箱
无论哪款开发板,我们首先都得从外观开始,始于颜值,终于性能。
收到快递,大大的箱子,里面竟有一块裸板和数据线,这不是槽点,抛开板子不谈,给了数据线,就是朋友。
关于颜值,说实话,这块板子颜值并不算高,底色大众,版面清爽(其实就是堆料太少),整块板子的外设一眼可见,电源,烧录器,LED,按键以及引出的IO。在相比较其他的测评开发板,这块板子的诚意不足。个人觉得板子的体积可以压缩一下,会显得整体结构更为紧凑,看起来会更舒适。在手头没有其他外设的情况下,可测评的东西太少,所以重点放在这块MCU上面。
上电之后,D4灯太亮了,电阻其实可以更大点,盯着看眼睛受不了。值得夸赞的是按键的手感很是舒适。
性能:
内核 CPU
― 32 位 ARM Cortex-M4 内核+ FPU,单周期硬件乘除法指令,支持 DSP 指令和 MPU, 最高主频 108MHz, 135DMIPS
属于超值型,主频108偏低。
定时器测试:
在进行定时器测试时,直接打开官方资料包的例程。
void TIM_Configuration(void)
{
    /* Compute the prescaler value */
    PrescalerValue = 0; //(uint16_t) (SystemCoreClock / 12000000) - 1;

    /* Time base configuration */
    TIM_TimeBaseStructure.Period    = 65535;
    TIM_TimeBaseStructure.Prescaler = 0;
    TIM_TimeBaseStructure.ClkDiv    = 0;
    TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;

    TIM_InitTimeBase(TIM1, &TIM_TimeBaseStructure);

    /* Prescaler configuration */
    TIM_ConfigPrescaler(TIM1, PrescalerValue, TIM_PSC_RELOAD_MODE_IMMEDIATE);

    /* TIM1 enable update irq */
    TIM_ConfigInt(TIM1, TIM_INT_UPDATE, ENABLE);

    /* TIM1 enable counter */
    TIM_Enable(TIM1, ENABLE);
}
我将预分频改为107,周期设为1000,我自己觉得应该是1ms进一次定时器中断,然后根据工程中的readme文件,准备将示波器接到PC6进行测试。

结果找不到PC6,封装太小,不配合官方demo,于是自己动手加一个PC14,将中断函数中的IO也换成PC14。示波器接上发现是2ms进行一次IO翻转。于是去找一下文档,值得称赞的是文档纯中文,在文档编译方面,国民技术真的很良心,终于不是那些国产芯片,非得搞一些英文文档的难受操作。
但是舒适的时间短暂,在看到时钟树后就有点难受了。

108M的主频分到APB2只有54M,分给APB1就只有27M了。不知道为啥这样操作,本来主频就偏低,结果分到APB总线又低了好多。不过解决了我定时器的问题,因为TIM1在APB2上,所以预分频因子改为53便可。最终效果如下:
void TIM_Configuration(void)
{
    /* Compute the prescaler value */
    PrescalerValue = 107; //(uint16_t) (SystemCoreClock / 12000000) - 1;

    /* Time base configuration */
    TIM_TimeBaseStructure.Period    = 1000;
    TIM_TimeBaseStructure.Prescaler = 0;
    TIM_TimeBaseStructure.ClkDiv    = 0;
    TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;

    TIM_InitTimeBase(TIM1, &TIM_TimeBaseStructure);

    /* Prescaler configuration */
    TIM_ConfigPrescaler(TIM1, PrescalerValue, TIM_PSC_RELOAD_MODE_IMMEDIATE);

    /* TIM1 enable update irq */
    TIM_ConfigInt(TIM1, TIM_INT_UPDATE, ENABLE);

    /* TIM1 enable counter */
    TIM_Enable(TIM1, ENABLE);
}
得到波形如下:

可以看到,定时器还是很准的。
故事到这里本该结束,但是从上次开始,每一块开发板都得经受超频的测试。
改变主频,超频测试。进行到这里遇到了问题,demo的时钟配置我还没缕清。留在明天研究。


使用特权

评论回复
沙发
kyzhd| | 2021-12-21 17:44 | 只看该作者
会玩,点个赞先。

使用特权

评论回复
板凳
丙丁先生| | 2023-3-4 07:07 | 只看该作者
大佬,源码

使用特权

评论回复
地板
bestwell| | 2023-3-9 12:00 | 只看该作者
这个定时器有多少个?              

使用特权

评论回复
5
timfordlare| | 2023-3-9 12:30 | 只看该作者
有旋转编码器的解码功能吗?              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

481

主题

3799

帖子

47

粉丝