main.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "stm32f10x.h"
  5. #include "adc.h"
  6. #include "stdio.h"
  7. #include "key.h"
  8. #include "usart.h"
  9. #include "stdio.h"
  10. #include "oled.h"
  11. #include "string.h"
  12. #include "w25qxx.h"
  13. #define IRQ_Sta PBin(7)
  14. #define EN_INTERRUPT __enable_irq();
  15. #define DI_INTERRUPT __disable_irq();
  16. void TIM4_IRQHandler() //20ms 1次
  17. {
  18. static u8 st;
  19. st=TIM_GetFlagStatus(TIM4, TIM_IT_Update);
  20. if(st!=0)
  21. {
  22. TIM_ClearFlag(TIM4, TIM_IT_Update);
  23. }
  24. }
  25. void Timer4_init() //T4 20ms时钟
  26. {
  27. //
  28. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  29. NVIC_InitTypeDef NVIC_InitStructure;
  30. RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM4,ENABLE);//M
  31. TIM_TimeBaseStructure.TIM_Period = 20000-1; //计数个数 //20ms
  32. TIM_TimeBaseStructure.TIM_Prescaler =72-1;//分频值
  33. TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //分割时钟
  34. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
  35. TIM_DeInit(TIM4);
  36. TIM_TimeBaseInit(TIM4, & TIM_TimeBaseStructure);
  37. TIM_Cmd(TIM4, ENABLE); //使能定时器2
  38. /*以下定时器4中断初始化*/
  39. TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE); //向上计数溢出产生中断
  40. NVIC_InitStructure.NVIC_IRQChannel =TIM4_IRQn;// TIM4_IRQChannel;
  41. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  42. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  43. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  44. NVIC_Init (&NVIC_InitStructure);
  45. }
  46. char showBuff[16];
  47. int main(void)
  48. {
  49. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  50. delay_init(); //延时函数初始化
  51. LED_Init(); //初始化与LED连接的硬件接口
  52. uart_init(115200);//串口初始化
  53. uart3_init(115200);
  54. delay_ms(1000);//上电延时一会
  55. printf("init\r\n");
  56. OLED_Init();//液晶初始化
  57. OLED_Clear();
  58. Timer4_init();
  59. W25QXX_Init(); //W25QXX初始化
  60. while(W25QXX_ReadID()!=W25Q128) //检测不到W25Q128
  61. {
  62. delay_ms(50);
  63. LED1=!LED1;//DS0闪烁
  64. }
  65. Show_Str_Fury(0,0,200,12,(u8 *)"湖南工业职业技术学院",12);
  66. Show_Str_Fury(0,15,100,12,(u8 *)"刘浩sadlfjasf",12);
  67. Show_Str_Fury(0,30,100,12,(u8 *)"sadlfjasfjlak",12);
  68. //OLED_ShowString1(4,4,"1234",16);
  69. OLED_Refresh_Gram1();
  70. delay_ms(1500);
  71. //OLED_ShowString(0,4,(u8*)"send:",16);//液晶显示
  72. OLED_QRcode_Display("qr_test单片机生成二维码123456",2,0);
  73. //OLED_QRcode_Display("https://jq.qq.com/?_wv=1027&k=BcGpo9TY",62,1);
  74. // OLED_QRcode_Display("wxp://f2f0UCwZO19yitEMuDpx-w2KWR2Dl_Glokq5sEAvvGclAp1bq-ty1bVHi6hd3h1qK-0M",0,0);
  75. // oled_printf(81,0,"oled");
  76. // oled_printf(81,2,"1234");
  77. while(1)
  78. {
  79. }
  80. }