stm8代码生成器 一键配置省了多少麻烦事

另外此软件还带有电阻分压计算 和并联电阻计算

生成的代码如下:

#include <iostm8s103f3.h>

#define        uint         unsigned    int
#define        uchar        unsigned    char
#define        ulong        unsigned    long

void  delay_ms(uchar  ms)
{
    uchar  i,j;
    while(ms--)
    {
        for(i=4;i!=0;i--)
          for(j=100;j!=0;j--);
    }
}

void  adc_init(void)
{
    ADC_CR1_ADON = 1;      //打开adc
    ADC_CSR_CH = 0;        //AIN0脚
    ADC_CR1_SPSEL = 2;     //4分频时钟
}

uint  adc_get(void)
{
    uint  dataH, dataL;
    ulong  value = 0;
    uint   voltage = 0;         //电压单位为(mV)
    ADC_CR1_ADON = 1;           //使能adc
    while(ADC_CSR_EOC==0);
    dataH = ADC_DRH;            //左对齐数据
    dataL = ADC_DRL;            //读取寄存器数据
    ADC_CSR_EOC = 0;
    value = dataH<<2|dataL;
    voltage = (value*5000)>>10;     //计算实际电压
    return  voltage;
}

void  uart1_init(void)
{
    UART1_CR1=0x00;
    UART1_CR2=0x00;
    UART1_CR3=0x00;
    UART1_BRR2 = 0x01;
    UART1_BRR1 = 0x01;     //115200波特率
}

void  Exit_Init(void)
{
    EXTI_CR1_PAIS = 2;    //下降沿触发
}

void  WDT_Init(void)
{
    IWDG_KR = 0xCC;       //启动看门狗
    IWDG_KR = 0x55;       //解除写保护
    IWDG_PR = 0x06;       //256分频,最高1.02秒
    IWDG_RLR = 125;       //500ms
    IWDG_KR = 0xAA;       //写保护
}

void  WDT(void)
{
    IWDG_KR = 0xAA;       //喂狗指令WDT();
}

void  timer_Init(void)
{
    TIM1_PSCRH = 0;
    TIM1_PSCRL = 1;          //(1+1)分频为1M
    TIM1_ARRH = 0x3;
    TIM1_ARRL = 0xE8;        //每1000us中断一次
    TIM1_IER = 0x01;         //允许更新中断
    TIM1_CR1 = 0x01;         //计数器使能,开始计数

    //TIM2/3/4/5/6须使用与芯片对应的头文件
    TIM2_PSCR_PSC = 1;          //2^1 分频为1M 
    TIM2_ARRH = 0x3;
    TIM2_ARRL = 0xE8;        //每1000us中断一次
    TIM2_IER = 0x01;         //允许更新中断
    TIM2_CR1 = 0x01;         //计数器使能,开始计数
}

void  main(void)
{
    asm("sim");    //关总中断
    adc_init();
    uart1_init();
    Exit_Init();
    timer_Init();
    WDT_Init();
    asm("rim");    //开总中断
    while(1)
    {
        asm("nop");
    }
}

#define   TLI_vector               0x02
#define   EXTI0_PA_vector          0x05
#define   EXTI1_PB_vector          0x06
#define   EXTI2_PC_vector          0x07
#define   EXTI3_PD_vector          0x08
#define   EXTI4_PE_vector          0x09

#pragma   vector = EXTI0_PA_vector
__interrupt  void  EXTI0_PA(void)
{
    //your code here
}

#pragma   vector = TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF(void)
{
    TIM1_SR1_UIF = 0;
    //add your code here
}

#pragma   vector = TIM2_OVR_UIF_vector
__interrupt void TIM2_OVR_UIF(void)
{
    TIM2_SR1_UIF = 0;
    //add your code here
}

另附上 库函数软件版的手册

再也不用整天的对着手册查找了

想用什么库函数 什么寄存器直接搜索   全中文显示方便快捷 

资料下载如下:

发布了112 篇原创文章 · 获赞 120 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/qq_36958104/article/details/96479437