本帖最后由 强仔00001 于 2015-9-9 00:32 编辑
昨天晚上弄了IO方面的内容,今晚来弄弄系统时钟。时钟电路对于单片机来说至关重要,就行心脏对于我们人类来说。一般来说,时钟越高,单片机执行的指令就越快,处理数据的速度就越快。我们这次比赛用到的R7F0C8096系列的时钟最高能达到20MHz的运行速度。如下手册的说明:
大家注意这个时钟是有高速内部振荡器提供的。相对来说还有低速内部振荡器时钟。但要注意的是低速内部振荡器时钟不能作为CPU的主时钟,只能最为某些外设的时钟源,如下手册已经说的很明白:
那今天我来做个小实验来验证时钟模块这部分。我们就写个简单的延时函数,分别在较低速度和较高的速度下运行,来做个比对。
我们可以通过HOCODIV寄存器来设定时钟的速度,时钟分别有以下这几个档位。
然后我们看看HOCODIV寄存器的内容:
- #include "userdefine.h"
- void GPIO_Init()
- {
- PMC1 &=0xFD; /* 设置 P11 为数值端口 */
-
- PU1 |=0x02; /* 设置P11为上拉 */
- PM1 |=0x02; /* 设置 P11 为输入模式 */
- }
- void LED_Init(void)
- {
- PMC0 &=0xFD; /* 设置 P01 为数值端口 */
-
- //PU0 |= 0x02;
- //PD0 |= 0x02;
- PM0 &= 0xFD; /* 设置 P01 为输出模式 */
- }
- void LED_On(void)
- {
- P0 &= 0xFD;
- }
- void LED_Off(void)
- {
- P0 |= 0x02;
- }
- int flag;
- void delay(int n)
- {
- unsigned int i=0,j=0;
- for(i=0;i<n;i++)
- for(j=0;j<2000;j++);
- }
- void Hight_Clock_Init(void)
- {
- HOCODIV = 0x01U;
- }
- void Low_Clock_Init(void)
- {
- HOCODIV = 0x05U;
- }
- void main(void)
- {
- Hight_Clock_Init();
- GPIO_Init();
- LED_Init();
-
- while (1)
- {
- delay(100);
- LED_On();
- delay(100);
- LED_Off();
- }
- }
复制代码
放上两个图比对一下:较慢的是以1.25MHz运行,较快的是以20MHz运行