久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2794|回復: 7
打印 上一主題 下一主題
收起左側

ARDUINO STM32離線安裝包

[復制鏈接]
跳轉到指定樓層
樓主
ID:328023 發表于 2023-8-2 11:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
安裝arduino2.00以上版本后,運行一次,把這個文件放在C:\Users\Administrator\AppData\Local下,就可以驅動STM32F030 STM32F103系列單片機,開發效率遠高于keill,

下載路徑:鏈接:https://pan.baidu.com/s/1eT9Zsy11HqAp5Yr37yRqKg
提取碼:lfs5
b230802



#if !( defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3)  ||defined(STM32F4) || defined(STM32F7) || \
       defined(STM32L0) || defined(STM32L1) || defined(STM32L4) || defined(STM32H7)  ||defined(STM32G0) || defined(STM32G4) || \
       defined(STM32WB) || defined(STM32MP1) )
  #error This code is designed to run on STM32F/L/H/G/WB/MP1 platform! Please check your Tools->Board setting.
#endif




#define TIMER_INTERRUPT_DEBUG         0
#define _TIMERINTERRUPT_LOGLEVEL_     0

#include "STM32TimerInterrupt.h"


  #define bpm1_h       digitalWrite(PA15, HIGH);              // Pin 33/PB0 control on-board LED_GREEN on F767ZI
  #define bpm1_l       digitalWrite(PA15, LOW);

  #define bpm2_h       digitalWrite(PB3, HIGH);              // Pin 33/PB0 control on-board LED_GREEN on F767ZI
  #define bpm2_l       digitalWrite(PB3, LOW);
   



#ifndef LED_BUILTIN
  #define LED_BUILTIN       PB5              // Pin 33/PB0 control on-board LED_GREEN on F767ZI
#endif

#ifndef LED_BLUE
  #define LED_BLUE          PC13               // Pin 73/PB7 control on-board LED_BLUE on F767ZI
#endif

#ifndef LED_RED
  #define LED_RED           PB5             // Pin 74/PB14 control on-board LED_BLUE on F767ZI
#endif
   
#include "STM32TimerInterrupt.h"
#include "STM32_ISR_Timer.h"

#define TIMER_INTERVAL_MS         10
#define HW_TIMER_INTERVAL_MS      10

void sub9(void) ;
#define        u8      unsigned char
u8 Rxdata[10] ;
String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete
boolean bfbase4ms = false; ;
boolean bfdatasend = false ;
int inByte;                     // Byte read from Serial1
unsigned int wcad ;
  union{
    struct{
        unsigned    bfbase        :    1    ;
        unsigned    syi893        :    1    ;   
        unsigned    bfpoweroff        :    1    ;
      
         unsigned     shu164 :1;

        unsigned     bfrf_isrread    :    1 ;
        
               
        }onebit    ;
        unsigned    char    allbits    ;
    }wflag    ;

// Depending on the board, you can select STM32 Hardware Timer from TIM1-TIM22
// For example, F767ZI can select Timer from TIM1-TIM14
// If you select a Timer not correctly, you'll get a message from ci[ompiler
// 'TIMxx' was not declared in this scope; did you mean 'TIMyy'?

// Init STM32 timer TIM1
STM32Timer ITimer(TIM1);

// Init STM32_ISR_Timer
// Each STM32_ISR_Timer can service 16 different ISR-based timers
STM32_ISR_Timer ISR_Timer;

#define TIMER_INTERVAL_0_5S           500L
#define TIMER_INTERVAL_100mS          5    //100ms
#define TIMER_INTERVAL_1_5S           1500L

void TimerHandler()
{
  ISR_Timer.run();
}

// In STM32, avoid doing something fancy in ISR, for example complex Serial.print with String() argument
// The pure simple Serial.prints here are just for demonstration and testing. Must be eliminate in working environment
// Or you can get this run-time error / crash
void doingSomething1()
{
//  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

void doingSomething2()
{
//  digitalWrite(LED_BLUE, !digitalRead(LED_BLUE));
bfbase4ms = true ;
wflag.onebit.bfbase = 1 ;
//  Serial2.write(0x5a);
}
void doingSomething3()
{
  digitalWrite(LED_RED, !digitalRead(LED_RED));
}

void subled(void)
{
    u8 static wcled ;
   
    wcled++ ;
    if(wcled>3)
    {
    wcled = 0 ;   
    sub9();
   
    }
   
}

const unsigned char Bank_Reg[]={
0x33,  //0
0x00,
0x01,
0x03,
0x01,
66,
0x26,    //1Mbps data rate, output power=-5dBm
0x07,
0x00,
0x00,
0x00,
0x00,
0xc3,
0xc4,
0xc5,
0xc6,
0x20,
0x20,
0x20,
0x20,
0x20,
0x00,

};










void subdelay(unsigned int settime)
{
    unsigned int i ;
    i = 0 ;
    while(i<settime)
    {
        i++ ;
    }
   
}


#define     MISO    digitalRead(PA6)
#define     IRQ     digitalRead(PA0)
#define     M0SI0    digitalWrite(PA7, LOW);
#define     M0SI1    digitalWrite(PA7, HIGH);
#define     SCK0    digitalWrite(PA5, LOW);
#define     SCK1    digitalWrite(PA5, HIGH);
#define     CE0        digitalWrite(PB0, LOW);   
#define     CE1        digitalWrite(PB0, HIGH);   
#define     CSN0    digitalWrite(PA4, LOW);
#define     CSN1    digitalWrite(PA4, HIGH);



void SPI_GPIO_Init()
{
  pinMode(PA6, INPUT_PULLUP);
  pinMode(PA7, OUTPUT);
  pinMode(PA5, OUTPUT);
  pinMode(PA4, OUTPUT);
  pinMode(PB0, OUTPUT);
  pinMode(PA0, INPUT_PULLUP);
  pinMode(PB3, OUTPUT);
  pinMode(PA15, OUTPUT);
   pinMode(PB5, OUTPUT);
   
}

unsigned char sub1(unsigned char value)                                    
{         
    u8    racc0 ;                                             
    for(racc0=0;racc0<8;racc0++)   // output 8-bit
        {
        if(value & 0x80){M0SI1;}
        else{M0SI0;    }
        value = (value << 1);           // shift next bit into MSB..
        SCK1;                      // Set SCK high..
        if(MISO){value = value|0x01 ;}
        else{value = value&0xfe ;}
        SCK0;                     
        }
        return(value);         
}

void sub2(unsigned char reg, unsigned char value)                 
{
    CSN0 ;                   // CSN low, init SPI transaction
    sub1(reg|0x20);      // select register
    sub1(value);             // ..and write value to it..
    CSN1;                   // CSN high again
}  

void sub3(unsigned char reg, unsigned char value)                 
{
    CSN0;                   // CSN low, init SPI transaction
    sub1(reg);      // select register
    sub1(value);             // ..and write value to it..
    CSN1;                   // CSN high again
}


unsigned char sub4(unsigned char reg)                              
{                                                           
    unsigned char value,op_status;
    CSN0 ;               // CSN low, initialize SPI communication...
    op_status=sub1(reg);            // Select register to read from..
    value = sub1(0);    // ..then read register value
    CSN1;                // CSN high, terminate SPI communication
    return(value);        // return register value
}

void sub5(void)
{
    u8    racc0 ;  
   
    racc0=sub4(7);
    racc0=racc0&0x80;
    if(racc0 == 0x80){sub3(0x50,0x53);    }   
}

    void        sub6(void)
{
    CSN0    ;
    sub1(0x0a|0x20);
    sub1(0Xd2);  
    sub1(0Xb5);
    sub1(0x99);
    sub1(0xb3);
    sub1(0x41);
    CSN1 ;
    subdelay(10);  

    CSN0    ;
    sub1(0x10|0x20);
    sub1(0Xd2);  
    sub1(0Xb5);
    sub1(0x99);
    sub1(0xb3);
    sub1(0x41);
    CSN1 ;
   
//    sub2(0x02,0x01);
   
}

void sub7(void)
{
    unsigned char   byte_ctr,racc0 ;

    CE0;
    sub5();
    sub6();
   
    subdelay(10);
    sub2(0xE2,0);//flush Tx
    racc0=sub4(0x00);    // read register 0x00's value
    byte_ctr=racc0|0x01;//set bit 1
  sub2( 0x00, byte_ctr); // Set PWR_UP bit, enable CRC(2 length) & Prim:RX. RX_DR enabled.
    CE1;

}

void    sub8(void)
{
    unsigned char sendcount,tempdata ;
   
    sendcount = 0 ;
    sub5();
    while(sendcount<22)
            {
            tempdata = Bank_Reg[sendcount];
            sub2(sendcount,tempdata);
            sendcount++;   
            subdelay(10);
            }
            
    sub3(0x50,0x73);
    sub2(0x1c,0x3f);
    sub2(0x1d,0x07);
    subdelay(100);
    sub7();
   
}

void sub9(void)
{
    u8 racc0 ;
    u8 static wcled ;
if(!IRQ)
      {
   
    CSN0    ;
    subdelay(10);
    sub1(0x61);
//    digitalWrite(LED_BLUE, !digitalRead(LED_BLUE));
    for(racc0=0 ; racc0<7;racc0++)
    {
    Rxdata[racc0] = sub1(0) ;
   

    }
   
   
   
    if((Rxdata[0]==0x55)&&(Rxdata[1]==0xaa)&&(Rxdata[3]==0x03))
    {
        wcled = 0 ;
        if((Rxdata[4]==2))
        {
             bpm1_l;
            bpm2_h ;
            
            
        //    digitalWrite(LED_BLUE, HIGH);
        //    digitalWrite(LED_RED, LOW);
        }
        else if((Rxdata[4]==1))
        {
             bpm1_h;
bpm2_l ;
            
    //        digitalWrite(LED_RED , HIGH);
    //        digitalWrite(LED_BLUE, LOW);
            
            
        }
        else
        {
             bpm1_h;
bpm2_h ;

// digitalWrite(LED_RED , LOW);
//            digitalWrite(LED_BLUE, LOW);


        }
            
        
    }



   
    CSN1    ;
        
          sub2(0x07,0x70);
          sub3(0xE2,0);
        //  Serial.print("RXOK\n");
      }
    else
    {
        wcled++ ;
        if(wcled>10)
        {
            wcled = 0 ;
    //        digitalWrite(LED_BLUE, LOW);
        }
        
    }
}

void    subpoweron(void)
{
    u8 wccheck ;
    wccheck = 0 ;
while(wccheck != 18)
{
sub2(0x05,18);
delay(50);   
wccheck = sub4(0x05);
  if(stringComplete==false)
  {
//  Serial2.write(84);
  stringComplete = true ;

  }
  else
  {
stringComplete=false ;

  //  Serial2.write(14);
   
  }




}
   
   
   
}





void setup()
{




  Serial.begin(9600);


  delay(100);

  Serial.print(F("\nStarting TimerInterruptLEDDemo on ")); Serial.println(BOARD_NAME);
  Serial.println(STM32_TIMER_INTERRUPT_VERSION);
  Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz"));

  // Instantiate HardwareTimer object. Thanks to 'new' instanciation, HardwareTimer is not destructed when setup() function is finished.
  //HardwareTimer *MyTim = new HardwareTimer(Instance);

  // configure pin in output mode

  pinMode(LED_BLUE,     OUTPUT);


  // Interval in microsecs
  if (ITimer.attachInterruptInterval(HW_TIMER_INTERVAL_MS * 1000, TimerHandler))
  {
    Serial.print(F("Starting ITimer OK, millis() = ")); Serial.println(millis());
  }
  else
    Serial.println(F("Can't set ITimer. Select another freq. or timer"));

  // Just to demonstrate, don't use too many ISR Timers if not absolutely necessary
  // You can use up to 16 timer for each ISR_Timer
// ISR_Timer.setInterval(TIMER_INTERVAL_0_5S,  doingSomething1);

// ISR_Timer.setInterval(TIMER_INTERVAL_1_5S,  doingSomething3);
SPI_GPIO_Init();
subpoweron();
sub8();
ISR_Timer.setInterval(TIMER_INTERVAL_100mS,    doingSomething2);
bpm1_l;
bpm2_l ;
}


void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
   
      stringComplete = true;
   
  }
}


void loop()
{
  /* Nothing to do all is done by hardware. Even no interrupt required. */
  if(wflag.onebit.bfbase)
  {
      wflag.onebit.bfbase = 0 ;
      subled();
      wcad = analogRead(PA3);    // read the input pin   
     if(wcad>30)
     {
         digitalWrite(LED_RED , LOW);
     digitalWrite(LED_BLUE, HIGH );
     }   
     else
     {
         digitalWrite(LED_RED , HIGH);
         digitalWrite(LED_BLUE, LOW);
     }
  }
  
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328023 發表于 2023-8-3 08:12 | 只看該作者
本人專業嵌入式開發,軟件硬件兼通,15年單片機開發經驗,量產產品上千萬,這個ARDUINO的確開發效益很高,比keil人性化(當然很多特別功能需要keil實現)但一般應用程序ARDUINO完全可以取代keil
回復

使用道具 舉報

板凳
ID:32962 發表于 2023-9-8 06:42 | 只看該作者
分享鏈接失效了,能再次分享嗎?
回復

使用道具 舉報

地板
ID:433680 發表于 2023-9-23 11:51 | 只看該作者
你所訪問的頁面不存在了,能再次分享嗎?
回復

使用道具 舉報

5#
ID:433680 發表于 2023-9-23 11:52 | 只看該作者
所訪問的頁面不存在了, 能再次分享嗎?
回復

使用道具 舉報

6#
ID:1083165 發表于 2023-12-2 14:01 | 只看該作者
樓主您好,鏈接失效能再分享一次嗎?謝謝
回復

使用道具 舉報

7#
ID:433680 發表于 2024-4-3 11:03 | 只看該作者
鏈接失效
啊哦,來晚了,該分享文件已過期
能再分享一次嗎?
回復

使用道具 舉報

8#
ID:311400 發表于 2024-4-3 14:54 | 只看該作者
來晚了,你所訪問的頁面不存在了,能再次分享嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品一区二区三区 | 在线欧美a | 丁香五月网久久综合 | yiren22综合网成人 | 久久久国产一区二区三区 | 国产精品乱码一区二区三区 | 日本三级全黄三级a | 亚洲国产高清免费 | 在线一区二区三区 | 天堂素人约啪 | 日本一区高清 | 精品中文字幕视频 | 久久精品视频免费观看 | 精品一级毛片 | 日韩精品一区二区三区在线播放 | 国产一级一级国产 | 四虎影院在线观看av | 亚洲成人一区 | 国产一区二区免费 | 日韩成人在线播放 | 国产精品区二区三区日本 | 久久精品超碰 | 久草在线青青草 | 殴美黄色录像 | 性做久久久久久免费观看欧美 | 精品国产一区久久 | 电影午夜精品一区二区三区 | 亚洲欧美一区二区在线观看 | 午夜在线| 在线观看欧美一区 | 亚洲视频在线看 | 欧美 日韩 在线播放 | 91亚洲精华国产 | 91久久综合| 青青草在线视频免费观看 | 成人超碰| 欧美久久免费观看 | 欧美一二三四成人免费视频 | 伊人免费观看视频 | 国产成人在线看 | 伊人伊人网|