[菜农助学交流] 第五批 之1 中断法串口收发

[复制链接]
 楼主| cnjxlxp 发表于 2012-4-15 22:16 | 显示全部楼层 |阅读模式
本帖最后由 cnjxlxp 于 2012-4-15 22:18 编辑

前段时间玩了M0一直没整理,今天整理一下发上来共享一下。

  1. #include <stdio.h>
  2. #include "NUC1xx.h"
  3. #include "DrvGPIO.h"
  4. #include "DrvUART.h"
  5. #include "DrvSYS.h"

  6. uint8_t writechar1[1] ={0x55};//default write char
  7. uint8_t getchar1;
  8. void UART_INT_HANDLE(void) // UART02 interrupt subroutine  
  9. {
  10. DrvUART_Read(UART_PORT0,writechar1,1);//driver read uart
  11. DrvSYS_Delay(5000);
  12. DrvUART_Write(UART_PORT0,writechar1,1); //driver write uart
  13. DrvUART_ClearIntFlag(UART_PORT0, DRVUART_RDAINT);   
  14. }   
  15. //uart set//n,8,1,9600
  16. void uart_init(void)
  17. {
  18.   STR_UART_T param;
  19.   DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC, 0);//UART clock is ex 12M   
  20.   //SYSCLK->CLKSEL1.UART_S = 0;  
  21.   //UART clock 00 =ex 12MHz  01 = PLL 1x =inner 22MHz  
  22.   DrvGPIO_InitFunction(E_FUNC_UART0); //GPIO use as uart
  23.    
  24.   param.u32BaudRate        = 9600;        
  25.   param.u8cDataBits        = DRVUART_DATABITS_8;     
  26.   param.u8cStopBits        = DRVUART_STOPBITS_1;     
  27.   param.u8cParity          = DRVUART_PARITY_NONE;     
  28.   param.u8cRxTriggerLevel  = DRVUART_FIFO_1BYTES;     
  29.   param.u8TimeOut          = 0;  //         FIFO time out
  30.       
  31.   DrvUART_Open(UART_PORT0, &param);
  32.    
  33.   DrvUART_ClearIntFlag(UART_PORT0, DRVUART_RDAINT);
  34.   DrvUART_EnableInt(UART_PORT0,DRVUART_RDAINT,UART_INT_HANDLE);  
  35. }
  36. void Sys_Init()
  37. {
  38. UNLOCKREG();            
  39.     SYSCLK->WRCON.XTL12M_EN = 1;//12M
  40. //DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);        
  41.     DrvSYS_Delay(5000);
  42. //while (DrvSYS_GetChipClockSourceStatus(E_SYS_XTL12M) != 1);
  43. //SYSCLK->CLKSTATUS.XTL12M_STB
  44. LOCKREG();
  45. uart_init();
  46. DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);//GPB10 output                                
  47.     DrvGPIO_ClrBit(E_GPB, 10);//if not clear GPB10, the buzzer will on. the default output is 0xffff;
  48. DrvGPIO_Open(E_GPA,2, E_IO_OUTPUT); //GPA2 output, LED1
  49. DrvGPIO_Open(E_GPA,3, E_IO_OUTPUT); //GPA3 output, LED2
  50. }
  51. void delay_ms(void)//delay form xiaobing's source code
  52. {
  53.     uint32_t i,j;
  54. for(i=1000;i>0;i--)
  55.     for(j=2395;j>0;j--);
  56. }
  57. int main (void)
  58. {
  59. Sys_Init();
  60.     while(1)
  61. {
  62.    ;
  63. }
  64. }


  65.                                     

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
john_lee 发表于 2012-4-15 23:14 | 显示全部楼层
没有任何文字说明,难道楼主不想让大家学习学习?
 楼主| cnjxlxp 发表于 2012-4-17 13:50 | 显示全部楼层
不好意思,我家里的系统是英文的。中文会出乱码。所以就只在程序中简单的用英文注释了一下。后面附图片应该可以看懂。
296895536 发表于 2013-3-18 14:47 | 显示全部楼层
感谢LZ,很好的列子。给我老大帮助啦~谢谢!
wangch_sh 发表于 2013-8-30 08:37 | 显示全部楼层
感谢楼主。
p262664916 发表于 2014-8-18 22:07 | 显示全部楼层
来 学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

46

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

46

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部