www.pudn.com > 74hc595-STM8.rar > Systerm.c, change:2015-03-31,size:1750b


#include "Systerm.h" 
 
void Systerm_Init() 
{ 
 // Clk_Init(); 
  GPIO_Init(); 
  Init_UART1(); 
  
   
  //EXIT_Init(); 
 
} 
 
/************************************************************************** 
 * 函数名:Clk_conf 
 * 描述  :时钟配置函数 
 * 调用  :外部调用  
 *************************************************************************/ 
void Clk_Init(void) 
{ 
  
  CLK_CKDIVR&= (uint8_t)(~0x18);/*时钟复位*/ 
  CLK_CKDIVR|= (uint8_t)0x00;/*设置时钟为内部16M高速时钟*/ 
   
} 
 
void GPIO_Init(void) 
{ 
  PC_DDR|=0x0f;   /* 设置数据方向寄存器 1为输出,0为输入--查看STM8寄存器.pdf P87 */ 
  PC_CR1|=0x0f;   /* 设置推挽输出--查看STM8寄存器.pdf P88 */ 
  PC_CR2|=0x0f;   /* 设置输出频率 1为10M,0为2M--查看STM8寄存器.pdf P89 */ 
    
} 
 
 
void Init_UART1(void) 
{ 
      UART1_CR1=0x00; 
      UART1_CR2=0x00; 
      UART1_CR3=0x00; 
      // 设置波特率,必须注意以下几点: 
      // (1) 必须先写BRR2 
      // (2) BRR1存放的是分频系数的第11位到第4位, 
      // (3) BRR2存放的是分频系数的第15位到第12位,和第3位 
      // 到第0位 
      // 例如对于波特率位9600时,分频系数=2000000/9600=208 
      // 对应的十六进制数为00D0,BBR1=0D,BBR2=00 
 
      UART1_BRR2=0x00; 
      UART1_BRR1=0x0d; 
 
      UART1_CR2=0x2c;//允许接收,发送,开接收中断 
} 
void UART1_sendchar(unsigned char c) 
{ 
      while((UART1_SR & 0x80)==0x00); 
      UART1_DR=c; 
} 
 
 
 
void EXIT_Init(void) 
{ 
  PD_DDR&=0x1f;/*设置数据方向寄存器 1为输出,0为输入*/ 
  PD_CR1|=0xe0;/*设置上拉输入*/ 
  PD_CR2|=0xe0;/*设置中断*/ 
  EXTI_CR1 &= (uint8_t)(~MASK_EXTI_CR1_PDIS); 
  EXTI_CR1 |= (uint8_t)((uint8_t)(0x02) << 6);/*设置为下降沿触发中断*/ 
} 
 
void Delay(u32 nCount) 
{ 
  /* Decrement nCount value */ 
  while (nCount != 0) 
  { 
    nCount--; 
  } 
 
}