app.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include <rtthread.h>
  2. #include "stm32f10x.h"
  3. #define LEDR_PORT GPIOA
  4. #define LEDR_PIN GPIO_Pin_11
  5. #define LEDR_RCC RCC_APB2Periph_GPIOA
  6. #define LEDG_PORT GPIOA
  7. #define LEDG_PIN GPIO_Pin_12
  8. #define LEDG_RCC RCC_APB2Periph_GPIOA
  9. char thread001_stack[512];
  10. struct rt_thread thread001;
  11. void rt_init_thread_entry001(void *parameter)
  12. {
  13. unsigned int count=0;
  14. GPIO_InitTypeDef GPIO_InitStructure;
  15. RCC_APB2PeriphClockCmd(LEDG_RCC,ENABLE);
  16. GPIO_InitStructure.GPIO_Pin = LEDG_PIN;
  17. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  18. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  19. GPIO_Init(LEDG_PORT,&GPIO_InitStructure);
  20. while (1)
  21. {
  22. rt_kprintf("thread001:%d\r\n",count++);
  23. GPIO_ResetBits(LEDG_PORT,LEDG_PIN);
  24. rt_thread_delay(RT_TICK_PER_SECOND);
  25. rt_kprintf("thread001:%d\r\n",count++);
  26. GPIO_SetBits(LEDG_PORT,LEDG_PIN);
  27. rt_thread_delay(RT_TICK_PER_SECOND);
  28. }
  29. }
  30. char thread002_stack[512];
  31. struct rt_thread thread002;
  32. void rt_init_thread_entry002(void *parameter)
  33. {
  34. unsigned int count=0;
  35. GPIO_InitTypeDef GPIO_InitStructure;
  36. RCC_APB2PeriphClockCmd(LEDR_RCC,ENABLE);
  37. GPIO_InitStructure.GPIO_Pin = LEDR_PIN;
  38. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  39. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  40. GPIO_Init(LEDR_PORT,&GPIO_InitStructure);
  41. while (1)
  42. {
  43. rt_kprintf("thread001:%d\r\n",count++);
  44. GPIO_ResetBits(LEDR_PORT,LEDR_PIN);
  45. rt_thread_delay(RT_TICK_PER_SECOND*2);
  46. rt_kprintf("thread001:%d\r\n",count++);
  47. GPIO_SetBits(LEDR_PORT,LEDR_PIN);
  48. rt_thread_delay(RT_TICK_PER_SECOND*2);
  49. }
  50. }
  51. int rt_application_init()
  52. {
  53. rt_thread_init(&thread001,"led",rt_init_thread_entry001,RT_NULL,&thread001_stack[0], sizeof(thread001_stack),20,10);
  54. rt_thread_init(&thread002,"led2",rt_init_thread_entry002,RT_NULL,&thread002_stack[0], sizeof(thread002_stack),20,10);
  55. rt_thread_startup(&thread001);
  56. rt_thread_startup(&thread002);
  57. return 0;
  58. }