只显示要测试的灯的代码:(灯一亮一暗的显示)
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
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |