立即注冊(cè) 登錄
返回首頁(yè)

uid:258894的個(gè)人空間

日志

數(shù)碼管NIXIe

已有 831 次閱讀2017-12-8 00:50

ain.c:

/************file:main.c****************/

#include "stm32f10x.h"

#include "Nixietube.h"

#include "initial.h"

#include "LED.h"

//#include "stm32f10x_it.h"

 

u8 LED_NUM = 0x08;

u16 TIMES = 0;

u8 data_bit = 4;

 

int main(void)

{

   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

   TIM2_TIM3_Init();

   LED_Init();

   NixieTube_Init();

   GPIOD->ODR = LED_NUM;

 

   TIM_Cmd(TIM2, ENABLE);

   TIM_Cmd(TIM3, ENABLE);

   while(1);

}

 

initial.c

/****************file:initial.c************/

#include "initial.h"

 

//Init TIM2&TIM3&NVIC

void TIM2_TIM3_Init(void)

{

   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

   NVIC_InitTypeDef NVIC_InitStructure;

 

   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3, ENABLE); //時(shí)鐘使能

  

   //定時(shí)器TIM2初始化 周期1s

   TIM_TimeBaseStructure.TIM_Period = 9999;

   TIM_TimeBaseStructure.TIM_Prescaler =7199;

   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時(shí)鐘分割:TDTS = Tck_tim

   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計(jì)數(shù)模式

   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位

 

   TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); //使能指定的TIM2中斷,允許更新中斷

  

   //定時(shí)器TIM3初始化 周期1ms

   TIM_TimeBaseStructure.TIM_Period = 9;

   TIM_TimeBaseStructure.TIM_Prescaler =7199;

   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時(shí)鐘分割:TDTS = Tck_tim

   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計(jì)數(shù)模式

   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位

 

   TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM2中斷,允許更新中斷

 

 

   //中斷優(yōu)先級(jí)NVIC設(shè)置 TIM2先占優(yōu)先級(jí)設(shè)置為0級(jí),TIM3設(shè)置為1級(jí)

   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM2中斷

   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占優(yōu)先級(jí)0級(jí)

   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //從優(yōu)先級(jí)3級(jí)

   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能

   NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器

  

   NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中斷

   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //先占優(yōu)先級(jí)1級(jí)

   NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器

 

   TIM_Cmd(TIM2, DISABLE);  //使能TIMx                

   TIM_Cmd(TIM3, DISABLE);

 

}

 

// Init LED

void LED_Init(void)

   GPIO_InitTypeDef GPIO_InitStructure;

  

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);

  

  //LED1——LED4 對(duì)應(yīng)的引腳為PD3——PD6

      GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

      GPIO_Init(GPIOD, &GPIO_InitStructure);

      GPIO_ResetBits(GPIOD, GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);      

}

 

//Init Nixie Tubes

void NixieTube_Init(void)

{

   GPIO_InitTypeDef  Nixietube_GPIO;

  

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);  //使能PG,PC端口時(shí)鐘

  

    Nixietube_GPIO.GPIO_Pin = 0x3fff; //PE0 - PE15

    Nixietube_GPIO.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽輸出

    Nixietube_GPIO.GPIO_Speed = GPIO_Speed_50MHz;      //IO口速度為50MHz

    GPIO_Init(GPIOE, &Nixietube_GPIO);              //根據(jù)設(shè)定參數(shù)初始化

  

}

 

NixieTube.c:

/************file:NixieTube.c****************/

#include "NixieTube.h"

 

//--- 數(shù)碼管段碼編碼 ----------------------

  u8 Nixie_x[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9


路過(guò)

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

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

Powered by 單片機(jī)教程網(wǎng)

返回頂部