 
					
				只显示要测试的灯的代码:(灯一亮一暗的显示)
void delay(unsigned int i)
{
unsigned int m,n;
for(m=0;m<i;m++)
{
for(n=0;n<6000;n++)
{
asm("\tNOP");
}
}
}
/******************************************************************************
NAME: main ();
FUNCTION: main loop
******************************************************************************/
void main (void)
{
Init ();
while(1)
{
delay(10);
PDR6_P62 = 1;
delay(10);
PDR6_P62 = 0;
}
}
这时候直接start stup是没有什么现象的,得需要设置STUP
 
					
				 
					
				点击:Debug ---Run---Go
得到下面的图片,图片是静止,当然也看不到闪烁的,但是这是经过我一步步的操作,是没啥疑问的!!图片图下:::::::::::::::::::::

 
					
				PDR:端口数据寄存器 0:输出低 1:输出高
DDR:数据方向寄存器 0:输入 1:输出
PUL:上拉控制寄存器 0:禁止 1:使能
ILSR:输入电平选择寄存器 0x04:CMOS 0x00:磁带(只有PDR0_P04具有次功能)
输入模式:有AD输入以及数字输入,由寄存器:AIDRL_Pyz来设置
比如:DDR0_P01=0;(设置输入)AIDRL_P01=1;(禁止AN1作为AD的输入)
明天再继续传定时器操作或者是URAT的的操作过程以及注意事项!
 
					
				
CN303代表的管教为CPU的第11到第20管教
与板子的相应的对比图是下图:

红色的数字20为CN303的1,也就是P12
 
					
				首先看的是定时寄存器的描述
1、控制状态寄存器0(T00CR0/T01CR0)
bit0:F0,bit1:F1,bit2:F2,bit3:F3,bit4:C0,bit5:C1,bit6:C2,bit7:IFE
2、控制状态寄存器0(T00CR1/T01CR1)
bit0:OE,bit1:SO,bit2:IF,bit3:BF,bit4:IR,bit5:IE,bit6:HO,bit7:STA
3、定时器模式寄存器(TMCR0)
bit0:FE00,bit1:FE01,bit2:FE10,bit3:FE11,bit4:MOD,bit5:IIS,bit6:TO0,bit7:TO1
操作的步骤:
1、设定模式(T00CR0:[F3:F0])=0000
2、设定计数器始终(T000CR0:[C2:C0])
3、设定计数器值
4、设定中断优先级
5、使能定时器输出(T00CR1:OE=1)
6、启动定时器(T00CR1:STA=1)
 
					
				定时器操作的程序如下:(自己测试用的)
main.c文件:
#include "mb95200.h"
unsigned int Systemtime;
/******************************************************************************
NAME:  InitCompTimer();
FUNCTION: initial timer for the interval timer (Free run) function
******************************************************************************/
void InitCompTimer (void)
{
 T01DR = 0x01;    // set count value (high 8 bit)
 T00DR = 0xFF;    // set count value (low 8 bit)
 TMCR0 = 0x10;    // 16-bit, no filtering
 T00CR0 = 0x82;    // interval timer in free run mode
        // enable IF flag interrupt
 T00CR1 = 0xA1;    // enable interrupt, enable output
        // start timer
}
/******************************************************************************
   name: CompTimer ();
   function: enter ISR while the counter value matches the pre-set value
******************************************************************************/
__interrupt void CompTimer (void)
{
 T00CR1_IE = 0;    // disable interrupt
 T00CR1_IF = 0;    // clear flag
 //...      // interrupt service routine
 Systemtime++;
 T00CR1_IE = 1;    // enable interrupt
}
/******************************************************************************
   name: main ();
   function: main loop
******************************************************************************/
void main (void)
{
 InitCompTimer();
 InitIrqLevels();
 __EI();
 
 DDR6_P63 = 1;
 while (1)
 {
 if(Systemtime<=10)
    {
    PDR6_P63=0;
    }
 if(Systemtime>=20)
    {
    PDR6_P63=1;
    }
 if(Systemtime>=30) {Systemtime=0;}
 }
}
 
					
				Vertor.c文件里面

然后声明中断入口函数

修改中断入口函数:

注意:
红线的函数为main文件的函数:__interrupt void CompTimer (void)
P63控制的蓝色的灯,现象如下:

定时器的操作完毕
(待续。。。下次是UART的测试)
 
					
				ILR1 = 0xF3; // IRQ4: UART/SIO ch0
// IRQ5: 8/16-bit timer ch0 (lower)
// IRQ6: 8/16-bit timer ch0 (upper)
// IRQ7: LIN-UART (reception)
F3:二进制为:11 11 01 11
那么:
11--IRQ4: UART/SIO ch0
11--IRQ5: 8/16-bit timer ch0 (lower)
01--IRQ6: 8/16-bit timer ch0 (upper)
11--IRQ7: LIN-UART (reception)
在每个ILR中可以中断优先级00 01 10 11, 优先级00为最大,ILR0>ILR5
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |

 
			
			
			
						
			





 
										 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

