[菜农助学交流] 第五批之5 GPIO LED BEEP UART

[复制链接]
2726|0
 楼主| cnjxlxp 发表于 2012-4-15 22:32 | 显示全部楼层 |阅读模式
本帖最后由 cnjxlxp 于 2012-4-15 22:34 编辑
  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. //uart set//n,8,1,9600
  9. void uart_init(void)
  10. {
  11. STR_UART_T param;
  12. DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC, 0);
  13. DrvGPIO_InitFunction(E_FUNC_UART0);

  14. param.u32BaudRate = 9600;
  15. param.u8cDataBits = DRVUART_DATABITS_8;
  16. param.u8cStopBits = DRVUART_STOPBITS_1;
  17. param.u8cParity = DRVUART_PARITY_NONE;
  18. param.u8cRxTriggerLevel = DRVUART_FIFO_1BYTES;
  19. param.u8TimeOut = 0;
  20. DrvUART_Open(UART_PORT0, ¶m);
  21. }

  22. void Sys_Init()
  23. {

  24. UNLOCKREG();
  25. SYSCLK->WRCON.XTL12M_EN = 1;//12M
  26. DrvSYS_Delay(5000);
  27. LOCKREG();

  28. uart_init();

  29. DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);//GPB10 output
  30. DrvGPIO_ClrBit(E_GPB, 10);//if not clear GPB10, the buzzer will on. the default output is 0xffff;

  31. DrvGPIO_Open(E_GPA,2, E_IO_OUTPUT); //GPA2 output, LED1
  32. DrvGPIO_Open(E_GPA,3, E_IO_OUTPUT); //GPA3 output, LED2
  33. }

  34. void delay_ms(void)//delay form xiaobing's source code
  35. {
  36. uint32_t i,j;
  37. for(i=1000;i>0;i--)
  38. for(j=2395;j>0;j--);
  39. }

  40. int main (void)
  41. {
  42. Sys_Init();

  43. while(1)
  44. {
  45. printf("hello world \n");//use printf to sent char from uart

  46. DrvUART_Write(UART_PORT0,writechar1,1); //driver write uart
  47. DrvSYS_Delay(5000);
  48. printf("\n");

  49. printf("input a char\n");//tell user to input a char
  50. DrvSYS_Delay(5000);

  51. while(UART0->ISR.RDA_IF==0);//stop here, till a char is received from uart to fifo
  52. DrvUART_Read(UART_PORT0,writechar1,1);//driver read uart

  53. DrvSYS_Delay(5000);
  54. DrvUART_Write(UART_PORT0,writechar1,1);//driver write uart
  55. DrvSYS_Delay(5000);
  56. printf("\n");

  57. printf("input a char\n");
  58. DrvSYS_Delay(5000);//stop here, till a char is received from uart
  59. getchar1=getchar();//use getchar to receive char from uart
  60. DrvSYS_Delay(5000);
  61. printf("the char you input is %c\n",getchar1);
  62. DrvSYS_Delay(5000);
  63. // scanf("%c\n",&getchar1);
  64. getchar1=getchar();//use getchar to receive char from uart
  65. DrvSYS_Delay(5000);
  66. printf("the char you input is ");
  67. putchar(getchar1);
  68. DrvSYS_Delay(5000);
  69. putchar('\n');
  70. putchar('b');//use putchar to send char to uart
  71. putchar('y');
  72. putchar('e');
  73. putchar('\n');

  74. while(1)//led2 blinks, and buzzer on and off alternate
  75. {
  76. DrvGPIO_ClrBit(E_GPA,2);//GPA2=0
  77. DrvGPIO_ClrBit(E_GPB, 10); //GPB10=0
  78. delay_ms();

  79. GPIOA->DOUT ^= 0x8; //LED2 turns on and off

  80. DrvGPIO_SetBit(E_GPA,2);//GPA2=1
  81. DrvGPIO_SetBit(E_GPB, 10);//GPB10=1
  82. delay_ms();
  83. }
  84. }

  85. }

本帖子中包含更多资源

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

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

46

帖子

2

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