main
#include "stm32f10x.h" #include <misc.h> //#define
int Delay_ms(unsigned int g) { for(volatile int f = g;f>1;f--){}; return 0; }
void my_timerinit(); void Reinit_system(); void TIM2_IRQHandler();
int main() { //RCC_DeInit(); //RCC_HSEConfig(RCC_HSE_ON); //external 8 MHZ //Reinit_system(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef PORTC_init; PORTC_init.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9; PORTC_init.GPIO_Speed = GPIO_Speed_50MHz; PORTC_init.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC,&PORTC_init); /* Remap GPIO */ GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); /* Enable GPIO clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE);
/* Enable USART clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); /* Configure USART Tx as alternate function push-pull */ GPIO_InitTypeDef U_init; U_init.GPIO_Mode = GPIO_Mode_AF_OD;//GPIO_Mode_AF_PP; U_init.GPIO_Pin = GPIO_Pin_9; U_init.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &U_init); USART_InitTypeDef MY_USART; MY_USART.USART_BaudRate = 1200; MY_USART.USART_WordLength = USART_WordLength_8b; MY_USART.USART_StopBits = USART_StopBits_1; MY_USART.USART_Parity = USART_Parity_No; MY_USART.USART_HardwareFlowControl = USART_HardwareFlowControl_None; MY_USART.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &MY_USART); USART_Cmd(USART1, ENABLE); /* */ //my_timerinit(); RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM2->ARR = 60000; // TIM2->PSC = 300; // TIM2->CR1 |= TIM_CR1_CEN; // TIM2->DIER |= TIM_DIER_UIE; // TIM2->SR = ~TIM_IT_Update; //TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//NVIC_Init((NVIC_InitTypeDef*)&nvic);
TIM_Cmd(TIM2, ENABLE);
//NVIC_InitTypeDef NVIC_InitStructure; //NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //NVIC_Init(&NVIC_InitStructure); /**/ __enable_irq(); // sei //NVIC_EnableIRQ(TIM2_IRQn);//); USART1_IRQn // //NVIC->ISER[0] = 0x110010; //OK return while(1) { for(volatile int r=0;r<6;r++) USART_SendData(USART1,r); //GPIO_ResetBits(GPIOC,GPIO_Pin_8); //GPIO_SetBits(GPIOC,GPIO_Pin_9); // for(volatile int e = 5;e>1;e--){ // Delay_ms(100000); //} // GPIO_ResetBits(GPIOC,GPIO_Pin_9); //GPIO_SetBits(GPIOC,GPIO_Pin_8); Delay_ms(100000); }
}
void TIM2_IRQHandler() { TIM2->SR &= ~TIM_SR_UIF; // ??????? ???? ?????????? GPIO_Write(GPIOC, GPIO_ReadOutputData(GPIOC) ^ GPIO_Pin_8); }
void Reinit_system() { //#define HSE_VALUE// 8000000 // Enable HSE RCC->CR |= RCC_CR_HSEON; //ждать готовности HSE while((RCC->CR & RCC_CR_HSERDY) == 0){}; //disable PLL RCC->CR &= 0xfeffffff; //disable PLL XTPRE RCC->CFGR &= 0xfffdffff; // PLLSRC RCC->CFGR |= 0x00010000; // PLL*2 = PLL -> 8 MHZ RCC->CFGR |= RCC_CFGR_SW_PLL ; //g=356; RCC->CFGR |= RCC_CFGR_PLLMULL_2; //PLL ON RCC->CR |= RCC_CR_PLLON ; //ждать готовности PLL while((RCC->CR & RCC_CR_PLLRDY) == 0){}; //return 0;//RCC_CR_HSERDY; }
//#include "pp.c"
--------------------
ARM_enia
|