STM32 定時(shí)器2+串口
#include "STM32Lib\stm32f10x.h" void USART_Configuration(void) //使能串口1,PA,AFIO總線 /* A9 USART1_Tx */ /* A10 USART1_Rx */ USART_InitStructure.USART_BaudRate = 9600; USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInit(USART1, &USART_ClockInitStructure); //使能串口2時(shí)鐘 // A2 做T2X // A3 做R2X USART_InitStructure.USART_BaudRate = 9600; USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInit(USART2, &USART_ClockInitStructure); USART_Cmd(USART2, ENABLE); void USART1_Putc(unsigned char c) void USART1_Puts(char * str) void USART2_Putc(unsigned char c) void USART2_Puts(char * str) } |
#ifndef HAL_H //硬件初始化 //輸出宏定義 #define LED2_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_7) #define LED3_OFF GPIO_ResetBits(GPIOC, GPIO_Pin_7) #define LED4_OFF GPIO_ResetBits(GPIOC, GPIO_Pin_5) #define LED5_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_9) #define LED6_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_8) #define LED7_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_5) #define LED8_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_0) //串口 extern u8 flag; #endif |
#include "STM32Lib\stm32f10x.h" void TIM_Configuration(void) /* TIM2 clock enable */ /* 基礎(chǔ)設(shè)置*/ TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); /* 比較通道1*/ TIM_OC1Init(TIM2, &TIM_OCInitStructure); /*比較通道2 */ TIM_OC2Init(TIM2, &TIM_OCInitStructure); /* 比較通道3 */ TIM_OC3Init(TIM2, &TIM_OCInitStructure); /* 比較通道4 */ TIM_OC4Init(TIM2, &TIM_OCInitStructure); /*使能預(yù)裝載*/ /* 4個(gè)通道和溢出都配置中斷*/ /* 允許TIM2開(kāi)始計(jì)數(shù) */ |
#include "STM32Lib\stm32f10x.h" void NVIC_Configuration(void) /* Configure one bit for preemption priority */ /* Timer2中斷*/ /*UART1*/ |
#include "STM32Lib\stm32f10x.h" /*允許總線CLOCK,在使用GPIO之前必須允許相應(yīng)端的時(shí)鐘. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /*初始化LED輸出為0*/ /* PB0,5,8,9輸出 */ /* PC5,7輸出*/ /*PA7,輸出*/ /*PA8,輸出*/ } |
hal.c
/*************************************************** #include "STM32Lib\stm32f10x.h" //各個(gè)內(nèi)部硬件模塊的配置函數(shù) //初始化GPIO //初始化中斷源 //初始化串口 //初始化定時(shí)器 /********************************* } |
stm32f10x_it.c
/******************************************************************************* extern u32 count=0; if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET) //點(diǎn)亮LED5// } //點(diǎn)亮LED6// // 點(diǎn)亮LED7// //點(diǎn)亮LED8// } LED5_OFF; /******************************************************************************* /******************************************************************************* /******************************************************************************* /******************************************************************************* /******************************************************************************* /******************************************************************************* /******************************************************************************* /******************************************************************************* /******************************************************************************* void USART1_IRQHandler(void) //溢出-如果發(fā)生溢出需要先讀SR,再讀DR寄存器 則可清除不斷入中斷的問(wèn)題 |
main.c
/************************************************************ #include "STM32Lib\stm32f10x.h" void d_2_char(u32 x) ChipHalInit(); //片內(nèi)硬件初始化 for(;;) } } //延遲函數(shù) |
RCC.c
#include "STM32Lib\stm32f10x.h" RCC_ClocksTypeDef RCC_ClockFreq; void RCC_Configuration(void) /************************************************** /* 這個(gè)配置可使外部晶振停振的時(shí)候,產(chǎn)生一個(gè)NMI中斷,不需要用的可屏蔽掉*/ |
管理員在2009年8月13日編輯了該文章文章。 -->
評(píng)論