LPC2138单片机如何产生稳定的方波(不使用PWM功能),谁能解决啊???

LPC2138单片机如何产生稳定的方波(不使用PWM功能),谁能解决啊???,第1张

凡事有个度,你需要绝对稳定那是不存在的,比如你要1K的PWM,精度要求0.1%,那么这中基个可以实现,除非你的单片机超级慢,响应中断需要很长时间,

首先你要确定进入中断卖历谨时单片机需要的时间,这个可以通过反汇编看到,其次是中断的优先级需要设置到最高,最好就定时器那么一个,如果你还要更高的精度那就用带有PWM外设的单片机,

最后就是外围的设计烂桐,你的单片机供电必须要高精度的稳压,否则你需要输出做PWM隔离,总的来说要做高精度的PWM需要软硬结合!

U0IER=0x02 //使能THRE中断

这句没使能接收中断吧,接收中断正常吗?

首先要知道,串口0只有一个中断入口,中断发生后,需要对中断标识寄存器进行判断以确定中断类型再进行相应处理。

如:

__irq void uart0()

{

if((U0IIR&0x0F)==0x02)

发送数据 //发送中断

if((U0IIR&0x0F)==0x04)

接收数据 //接收中断

.

.

.

VICVectAddr=0//中断结束

}

另外,实时性要求不是特别高的情况下,一般发送用查询方式即可。

/*

*********************************************************************************************************

** 函数名称 :IRQ_UART0()

** 函数功能 :串口0接收中断服务程序

** 入口参数 :无

** 出口参数 :无

*********************************************************************************************************

*/

void __irq IRQ_UART0 (void)

{

uint8 i

if ((U0IIR &0x0F) == 0x04)

rcv_new = 1 // 设置接收到新的数据标志

for (i=0i<8i++)

{

rcv_buf[i] = U0RBR // 读取FIFO的数据,并清除中断

}

VICVectAddr = 0x00 // 中断处理结束

}

/*

*********************************************************************************************************

** 函数名称 :UART0_SendByte()

** 函数功能 :向串口0发送1字节数据

** 入口参数 :dat 要渣指发送的数据

** 出口参数 :无

*********************************************************************************************************

*/

void UART0_SendByte (uint8 dat)

{

U0THR = dat// 要发送的数据

}

/*

*********************************************************************************************************

** 函数名称 :UART0_SendBuf()

** 函晌冲数功能 :向串口发送8字节数据

** 入口参数 :dat 要发送的数据

** 出口参数 :无

*********************************************************************************************************

*/

void UART0_SendBuf (void)

{

uint8 i

for (i=0i<8i++)

UART0_SendByte(rcv_buf[i])

while ((U0LSR &0x20) == 0)// 等待宴梁歼数据发送完毕

}

在使用LPC2138做一个控制器,但是有些地方不是懂,我现在想知道关于PINSEL2 寄存器的一些使用瞎拍方法,比如:我磨基羡想把P1.21 P1.22设置成输出该如何设置(请尽量详细的解答)?并且头文件的部分锋信改如何定义P1.21 P1.22名称?在一些资料上看到PINSEL2 寄存器在设置和编程的方法上都有很多的不同,由于错误的对PINSEL2 寄存器进行 *** 作,导致用仿真器连接时无法找到芯片进行写程序 *** 作了,但是之前写入的程序还能正常运行,不知道是芯片坏掉了还是锁死了,要是锁死了请高手指点一下如何对LPC2138进行解锁


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12422102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存