打印
[菜农助学交流]

第五批 之1 中断法串口收发

[复制链接]
3203|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cnjxlxp|  楼主 | 2012-4-15 22:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cnjxlxp 于 2012-4-15 22:18 编辑

前段时间玩了M0一直没整理,今天整理一下发上来共享一下。
 
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvUART.h"
#include "DrvSYS.h"

uint8_t writechar1[1] ={0x55};//default write char
uint8_t getchar1;
void UART_INT_HANDLE(void) // UART02 interrupt subroutine  
{
DrvUART_Read(UART_PORT0,writechar1,1);//driver read uart
DrvSYS_Delay(5000);
DrvUART_Write(UART_PORT0,writechar1,1); //driver write uart
DrvUART_ClearIntFlag(UART_PORT0, DRVUART_RDAINT);   
}   
//uart set//n,8,1,9600
void uart_init(void)
{
  STR_UART_T param;
  DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC, 0);//UART clock is ex 12M   
  //SYSCLK->CLKSEL1.UART_S = 0;  
  //UART clock 00 =ex 12MHz  01 = PLL 1x =inner 22MHz  
  DrvGPIO_InitFunction(E_FUNC_UART0); //GPIO use as uart
   
  param.u32BaudRate        = 9600;        
  param.u8cDataBits        = DRVUART_DATABITS_8;     
  param.u8cStopBits        = DRVUART_STOPBITS_1;     
  param.u8cParity          = DRVUART_PARITY_NONE;     
  param.u8cRxTriggerLevel  = DRVUART_FIFO_1BYTES;     
  param.u8TimeOut          = 0;  //         FIFO time out
      
  DrvUART_Open(UART_PORT0, &param);
   
  DrvUART_ClearIntFlag(UART_PORT0, DRVUART_RDAINT);
  DrvUART_EnableInt(UART_PORT0,DRVUART_RDAINT,UART_INT_HANDLE);  
}
void Sys_Init()
{
UNLOCKREG();            
    SYSCLK->WRCON.XTL12M_EN = 1;//12M
//DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);        
    DrvSYS_Delay(5000);
//while (DrvSYS_GetChipClockSourceStatus(E_SYS_XTL12M) != 1);
//SYSCLK->CLKSTATUS.XTL12M_STB
LOCKREG();
uart_init();
DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);//GPB10 output                                
    DrvGPIO_ClrBit(E_GPB, 10);//if not clear GPB10, the buzzer will on. the default output is 0xffff;
DrvGPIO_Open(E_GPA,2, E_IO_OUTPUT); //GPA2 output, LED1
DrvGPIO_Open(E_GPA,3, E_IO_OUTPUT); //GPA3 output, LED2
}
void delay_ms(void)//delay form xiaobing's source code
{
    uint32_t i,j;
for(i=1000;i>0;i--)
    for(j=2395;j>0;j--);
}
int main (void)
{
Sys_Init();
    while(1)
{
   ;
}
}


                                    

未命名2.jpg (57.57 KB )

未命名2.jpg

未命名3.jpg (26 KB )

未命名3.jpg

未命名4.jpg (64.72 KB )

未命名4.jpg

未命名5.jpg (57.48 KB )

未命名5.jpg

UART BY INT.rar

1.16 MB

相关帖子

沙发
john_lee| | 2012-4-15 23:14 | 只看该作者
没有任何文字说明,难道楼主不想让大家学习学习?

使用特权

评论回复
板凳
cnjxlxp|  楼主 | 2012-4-17 13:50 | 只看该作者
不好意思,我家里的系统是英文的。中文会出乱码。所以就只在程序中简单的用英文注释了一下。后面附图片应该可以看懂。

使用特权

评论回复
地板
296895536| | 2013-3-18 14:47 | 只看该作者
感谢LZ,很好的列子。给我老大帮助啦~谢谢!

使用特权

评论回复
5
wangch_sh| | 2013-8-30 08:37 | 只看该作者
感谢楼主。

使用特权

评论回复
6
p262664916| | 2014-8-18 22:07 | 只看该作者
来 学习一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

46

帖子

2

粉丝