
只显示要测试的灯的代码:(灯一亮一暗的显示)
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
回复
打赏帖 | |
---|---|
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 |