打印
[活动]

【G32A1465 测评】MCU_CLOCK

[复制链接]
397|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhjb1|  楼主 | 2024-12-19 20:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
九、MCU Clock
实例中有一个控制MCU时钟的实例,CLOCK,本实验加上系统时钟看有和影响。这个实验也不复杂,实验基于测评三、的GPIO_LCD增加内容完成。
打开工程,打开main.c;同时打开文件的方式打开\CLOCK\CLOCK_AllClocksConfiguration\ Source中的main.c,不妨叫这个main.c为“Cmain.c”先观察这个的头文件,发现多了几个,我们将它拷贝到main.cinclude的位置上,整个如下:
#include "user_config.h"
#include <stdio.h>
#include "main.h"
#include "board.h"
#include "system_g32a1xxx.h"
#include "user_clock_config.h"
#include <stdbool.h>
#include "g32a1xxx_int.h"
#include "g32a1xxx_adc.h"
#include "g32a1xxx_pins.h"
#include "g32a1xxx_lpuart.h"
#include "12864.h"
顺序是按照Cmain.c调整的,后来优先吗^_^
马上报一个错#include "main.h",说明原实例中没有这个,将他从CLOCKinclude文件夹中拷贝到本实例的include文件中(不考也行),但需要增加一行:
#include "device.h"
那种方法都可以;为了再LCD上显示频率并且打印输出,我们设置一个全局变量:
uint32_t js=0,mcuF;
Cmain.cvoid ReadConfigClockFreq(void)函数拷贝到main.c中,如下一段,这个测频相当多,适应按键我改了只区两段并且改成如下一段代码:
void ReadConfigClockFreq(void){
uint32_t freq[65];
STATUS_T returnStatus = STATUS_SUCCESS;
if(kk==101){
returnStatus = CLOCK_SYS_ReadFreq(HSICLK_CLK, freq+2);
if (returnStatus == STATUS_SUCCESS){
   printf("HSICLK_CLK Read Freq Successful \r\n");
   printf("HSICLK_CLK Freq : %d \r\n", freq[2]);
}else{
  printf("HSICLK_CLK Read Freq Failed \r\n");
  printf("STATUS_CODE : %03X",returnStatus);
}
mcuF=freq[2];
}
if(kk==202){
returnStatus = CLOCK_SYS_ReadFreq(SYSPLL_CLK, freq+3);
if (returnStatus == STATUS_SUCCESS){
   printf("SYSPLL_CLK Read Freq Successful \r\n");
   printf("SYSPLL_CLK Freq : %d \r\n", freq[3]);
}else{
   printf("SYSPLL_CLK Read Freq Failed \r\n");
   printf("STATUS_CODE : %03X",returnStatus);
  }
mcuF=freq[3];
}
}
如果没有按键,为了能输出一个freq[65]的频率,在循环语句前增加:
ReadConfigClockFreq();
printf("Test G32A1465 lcdDisp adc keyInt McuClock=%9d ...\r\n",mcuF);
在循环语句中增加:
ReadConfigClockFreq();
这样就可以利用按键的键值改变频率,我们只有两个:按key1键频率为48MHz,按key2键频率为112MHz
见虚拟串口截图,和照片。

9_1.jpg (350.01 KB )

9_1.jpg

9_2.jpg (891.71 KB )

9_2.jpg

使用特权

评论回复
沙发
zhjb1|  楼主 | 2024-12-19 20:38 | 只看该作者
补充说明,因为所有变量:js有sysTick中断完成,等,无法测出在48MHz和112MHz的主频下的差异。目前还玩不转MCUMARK这玩意,所以无法实测效果。从代码通用性来讲,Geehy厂家一定做的非常好,改变主频不会对象USART、I2C、SPI等设定速率产生影响的。

使用特权

评论回复
板凳
深渊之海| | 2024-12-20 10:47 | 只看该作者
修改频率的代码是哪个,我没看到贴出来的代码有这个啊

使用特权

评论回复
地板
zhjb1|  楼主 | 2024-12-20 12:37 | 只看该作者
深渊之海 发表于 2024-12-20 10:47
修改频率的代码是哪个,我没看到贴出来的代码有这个啊

CLOCK_SYS_ReadFreq(HSICLK_CLK, freq+2);
这一句是OSif.c中
static void OSIF_UpdateSysTickCfg(void)
在具体就没有继续看代码分析了,只是看到有频率输出的改变。
他到底有没有改变MCU频率需要测试后再说,也值得抽空看看,别是蒙人的显示频率值。
谢谢

使用特权

评论回复
5
zhjb1|  楼主 | 2024-12-20 12:44 | 只看该作者
今天测试频率改变后对性能有何影响做了一个代码:
在main的循环函数中加了两个循环累加数,因为是累加,肯定与频率有关,结果发现一个奇怪的问题:
代码下载后运行,在LCD上看累加速度还是比较快的,大约3秒累加到10;但如果运行了那个改频的代码(按键key1或key2)累加器的速度大约降了一半,6秒累加到10,并且显示是48MHz和112MHz没有关系,都是这么慢。那么可以认定的是:这个CLOCK仅仅是显示MCU的频率可以调整的范围,白高兴一场,
实验可以继续下去,找到改频的实例。

使用特权

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

本版积分规则

个人签名:永远好心情 [img]https://bbs.21ic.com/static/image/s

61

主题

277

帖子

1

粉丝