|
#include "stdio.h"
//#include "main.h"
#include "stm32l0xx.h"
unsigned int TempDat=0;
unsigned int TempCount=0;
unsigned int Delay=0;
unsigned char Dat=0;
unsigned char tdat;
unsigned int TransFlag=0; //not transformed-0 else transformed;
unsigned int ReadFlashStartAddr =0x08002000;
unsigned int WriteFlashStartAddr=0x08002000;
//ADC_HandleTypeDef AdcHandle;
//ADC_ChannelConfTypeDef sConfig;
//uint32_t aResultDMA;
//static void SystemClock_Config(void);
//static void Error_Handler(void);
//HAL_Init();
//USART
void UsartInit(void)
{
//PA2-TX PA3-RX AF4
RCC->IOPENR |= 0x01; //a′ò¿a
GPIOA->MODER |= 0X01<<5; //·t¸′óÃ
GPIOA->MODER &= ~(0x01<<4);
GPIOA->MODER |= 0X01<<7;
GPIOA->MODER &= ~(0x01<<6);
GPIOA->AFR[0] |=0x00004400; //¸′óÃÎaTX£¬RX£¿
RCC->APB1RSTR |= 0x00020000; //ÖØÖÃusart2
RCC->CCIPR |= 0X00000004; //Ïμí3ê±ÖóéèÎauasrtê±Öó£¬íaéèapbμÄ36M
RCC->APB1ENR |= 0x00020000; //uarst2ê±Öó′ò¿a
USART2->BRR |= 0x0EA6;//D′2»½øè¥ 3750/16;//96002¨ìØÂê 234.375 6 20970/96;
USART2->CR1 |= 0X0000000F;//ue uesm te re D′2»½ø襡?
}
void Usart2Tx(unsigned char Dat)
{
//if((USART2->ISR&0x00000040) == 0x00000040)
while((USART2->ISR&0x00000040) != 0x00000040){}//μètcÖÃò»
//{
USART2->TDR =Dat;
USART2->ICR |= 0x00000040;//tccp D′èëò» ½«tcÖÃáã
//}
}
//ADC
void ADC_Init(void)
{
RCC->IOPENR |= 0x01; //GPIOA CLOCK ENABLE
GPIOA->MODER |= 0X0300; //PA4-ANALOG A2½Å£¬adcin4
RCC->APB2ENR |= 0x00000201; //¿aadc걼䣬System configuration controller clock£¿£¿
ADC->CCR |= (0X01<<25)|(0X01<<18|0X01<<19|0X01<<21);//25ûD′½ø襣¬μíÆμÄ£ê½2.8M£¬ê±ÖóÆμÂê,256·ÖÆμ
ADC1->CHSELR |= 0x00000010; //í¨μà4êÇ×a»»
ADC1->CFGR2 |= 0x80000000;//adcê±Öó í¬2½ pclk/4£¬9M
ADC1->CFGR1 |= (0X01<<14)|(0X01<<13)|(0x02<<3);//×a»»·Ö±æÂê8bit£¬á¬DøÄ£ê½ μè′y×a»»Ä£ê½,ĬèÏóò¶ÔÆëÔúμíλ
ADC1->SMPR |= 0X01;//2éÑùê±¼ä7.5¸öadcÖüÆú Dìía¼ó8.5¸öÖüÆú
ADC1->ISR |= 0X04;//eoc ûóDD′½øè¥
if((ADC1->CR & ADC_CR_ADEN) != 0) //enable adc룬ÏèÇåáã
{ ADC1->CR &= (uint32_t)(~ADC_CR_ADEN);}
ADC1->CR |= ADC_CR_ADCAL; //D£×¼adc£¬
while ((ADC1->ISR & ADC_ISR_EOCAL) == 0) {}//D£×¼íê±Ï 1 êÇíê±Ï
ADC1->ISR |= ADC_ISR_EOCAL;//ÕaÖÖ±íê¾·½·¨£¿
ADC1->CR |= ADC_CR_ADEN; /* (1) */
ADC1->CR |= ADC_CR_ADVREGEN;//¿aÄú2¿ÎèÑ1
if ((ADC1->CFGR1 & ADC_CFGR1_AUTOFF) == 0)//èç1ûautooffÄ£ê½1Ø£¿
{
while ((ADC1->ISR & ADC_ISR_ADRDY) == 0){}//μè×Åadcenableoó×¼±¸oÃ
}
ADC1->CR |= 0X05; //SATRT ;ÂíéÏ¿aê¼ò»Ö±×a»»
}
int main(void)
{
//LedInit();
//KeyInitIT();
// HAL_Init();
UsartInit();
ADC_Init();
/* while(1)
{
while((ADC1->ISR&0x04)!=0x04){}
tdat = ADC1->DR;
if (tdat >= 0X80)
{
tdat = 0XFF;
}
else
{
tdat = 0X00;
}
//Usart2Tx(ADC1->DR);
Usart2Tx(tdat);
ADC1->ISR &= ~0x04;
}
*/
tdat = 0xFF;
while(1)
{
//tdat ^= 0x11;
tdat ^= 0xFF;
//USART2->TDR =tdat;
Usart2Tx(tdat);
}
}
这是所有的源代码~ |
|