[N32G43x] 【N32G435x】定时器试验

[复制链接]
1386|3
 楼主| 呐咯密密 发表于 2021-12-21 15:46 | 显示全部楼层 |阅读模式
本帖最后由 呐咯密密 于 2021-12-21 15:46 编辑

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

  5.     /* Time base configuration */
  6.     TIM_TimeBaseStructure.Period    = 65535;
  7.     TIM_TimeBaseStructure.Prescaler = 0;
  8.     TIM_TimeBaseStructure.ClkDiv    = 0;
  9.     TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;

  10.     TIM_InitTimeBase(TIM1, &TIM_TimeBaseStructure);

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

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

  15.     /* TIM1 enable counter */
  16.     TIM_Enable(TIM1, ENABLE);
  17. }
我将预分频改为107,周期设为1000,我自己觉得应该是1ms进一次定时器中断,然后根据工程中的readme文件,准备将示波器接到PC6进行测试。
readme.png
结果找不到PC6,封装太小,不配合官方demo,于是自己动手加一个PC14,将中断函数中的IO也换成PC14。示波器接上发现是2ms进行一次IO翻转。于是去找一下文档,值得称赞的是文档纯中文,在文档编译方面,国民技术真的很良心,终于不是那些国产芯片,非得搞一些英文文档的难受操作。
但是舒适的时间短暂,在看到时钟树后就有点难受了。
时钟树.png
108M的主频分到APB2只有54M,分给APB1就只有27M了。不知道为啥这样操作,本来主频就偏低,结果分到APB总线又低了好多。不过解决了我定时器的问题,因为TIM1在APB2上,所以预分频因子改为53便可。最终效果如下:
  1. void TIM_Configuration(void)
  2. {
  3.     /* Compute the prescaler value */
  4.     PrescalerValue = 107; //(uint16_t) (SystemCoreClock / 12000000) - 1;

  5.     /* Time base configuration */
  6.     TIM_TimeBaseStructure.Period    = 1000;
  7.     TIM_TimeBaseStructure.Prescaler = 0;
  8.     TIM_TimeBaseStructure.ClkDiv    = 0;
  9.     TIM_TimeBaseStructure.CntMode   = TIM_CNT_MODE_UP;

  10.     TIM_InitTimeBase(TIM1, &TIM_TimeBaseStructure);

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

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

  15.     /* TIM1 enable counter */
  16.     TIM_Enable(TIM1, ENABLE);
  17. }
得到波形如下:
波形.jpg
可以看到,定时器还是很准的。
故事到这里本该结束,但是从上次开始,每一块开发板都得经受超频的测试。
改变主频,超频测试。进行到这里遇到了问题,demo的时钟配置我还没缕清。留在明天研究。


kyzhd 发表于 2021-12-21 17:44 | 显示全部楼层
会玩,点个赞先。
bestwell 发表于 2023-3-9 12:00 | 显示全部楼层
这个定时器有多少个?              
timfordlare 发表于 2023-3-9 12:30 | 显示全部楼层
有旋转编码器的解码功能吗?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

568

主题

4085

帖子

56

粉丝
快速回复 在线客服 返回列表 返回顶部