在学习EASYARM2103时候遇到关于定时器的问题
本帖最后由 mdq123 于 2012-4-21 17:34 编辑#include "config.h"
uint8 find = 2;
uint32 commentyin = {0x03f0,0x060, 0x05b0, 0x04f0, 0x0660, 0x06d0, 0x07d0, 0x0270, 0x07f0, 0x06f0};
#define led 1<<17
void delay(uint32 n);
//void init_zhongduan();
void init_IO()
{
PINSEL0 = 0X0000;
IODIR = 0XffFF0;
IOCLR = 0XffFF0;
}
void__irq Timer0ISR (void)
{
find++;
if(find == 10)
{
find = 0;
}
init_IO();
T0IR = 0x01; /*清除中断标志 */
VICVectAddr = 0x00; /*中断向量结束 */
}
/*********************************************************************************************************
** Function name: Timer0Init
** Descriptions: 定时器0初始化
** input parameters: 无
** ouput parameters: 无
** Returned value: 无
*********************************************************************************************************/
voidTimer0Init(void)
{
T0TCR= 0x02; /*定时器0复位 */
T0PR = 0; /*不设时钟分频 */
T0MCR= 0x03; /*匹配后复位TC,并产生中断 */
T0MR0= Fpclk; /*设置0.5秒匹配值 */
T0IR = 0x01; /*清除中断标志 */
T0TCR= 0x01; /*启动定时器0 */
}
void init_zhongduan()
{
IRQEnable();
VICIntSelect = VICIntSelect & (~(1 << 4)); /*定时器0分配为IRQ中断 */
VICVectCntl0 = 0x20 | 4; /*定时器0分配为向量IRQ通道0 */
VICVectAddr0 = (uint32) Timer0ISR; /*分配中断服务程序地址 */
VICIntEnable = 1 << 4; /*定时器0中断使能 */
}
int main (void)
{// add user source code
init_IO();
Timer0Init();
init_zhongduan();
while(1)
{
//init_IO();
IOSET = commentyin;
//IO0SET = commentyin;
//delay(300);
}
return 0;
}
void delay(uint32 n)
{
uint32 i;
for(;n>0;n--)
{
for(i = 0;i<100;i++)
{
}
}
}
出定时中断之后,find的值变了,但是在硬件失误上显示不正常
页:
[1]