LED&RGB (用位操作实现)
#include "stm32f10x.h"
#include "stm32_eval.h"
GPIO_InitTypeDef GPIO_InitStructure;
void RCC_Configuration(void)
{
  RCC_DeInit();
    
  RCC_HSICmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
  
  RCC_HSEConfig(RCC_HSE_OFF);
  RCC_LSEConfig(RCC_LSE_OFF);
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz
  RCC_PLLCmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  RCC_PCLK1Config(RCC_HCLK_Div2);
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  while(RCC_GetSYSCLKSource() != 0x08);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
	GPIO_ResetBits(GPIOD,GPIO_Pin_2);//1?·??ù?÷
}
void GPIO_INIT()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA, ENABLE);//òa????PC,PA
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//òaê1ó?PC0µ?PC7
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//í?íìê?3?
  GPIO_Init(GPIOC, &GPIO_InitStructure);//3?ê??¯PC
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//òaê1ó?PA1,PA2,PA3
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//í?íìê?3?
	GPIO_Init(GPIOA, &GPIO_InitStructure);//3?ê??¯PA
}
void func(void)
{
	 int i,j;
        while(1)
        {
					GPIO_SetBits(GPIOC,0x000000ff);//LED全部熄灭
					GPIO_SetBits(GPIOA,0x0000000e);//RGB全部熄灭
					i=0x00000010;//给i赋一个右移前的值
          for(j=1;j<=4;j++)//LED D4-D1通过i右移4次依次点亮
          {
						i>>=1;右移一位
						GPIO_ResetBits(GPIOC,i);//PC3-PC0 D4-D1			
            delay_ms(200);
						GPIO_SetBits(GPIOC,i);//依次熄灭
          }
					i=0x00000100;//给i赋一个右移前的值
					for(j=1;j<=4;j++)//LED D8-D5通过i右移4次依次点亮
					{
						i>>=1;//右移一位
						GPIO_ResetBits(GPIOC,i); 	//PC7-PC4 D8-D5
						delay_ms(200);
						GPIO_SetBits(GPIOC,i);//依次熄灭
          }
					i=0x00000001;
					for(j=1;j<=3;j++)//RGB三基色通过左移3次实现依次点亮,下面的混合色的颜色顺序我不写了。。
					{
						i<<=1;//左移一位
						GPIO_ResetBits(GPIOA,i); 	//
						delay_ms(200);
						GPIO_SetBits(GPIOA,i);
						
						GPIO_ResetBits(GPIOA,0x00000006); 	//
						delay_ms(200);
						GPIO_SetBits(GPIOA,0x00000006);
						
						GPIO_ResetBits(GPIOA,0x0000000a); 	//
						delay_ms(200);
						GPIO_SetBits(GPIOA,0x0000000a);
						
						GPIO_ResetBits(GPIOA,0x0000000c); 	//
						delay_ms(200);
						GPIO_SetBits(GPIOA,0x0000000c);
          } 
        }
}
int main(void)
{ 
	RCC_Configuration();
	GPIO_INIT();
	func();
}
	
顺便说说这次的作业。。。我想不用switch的写法来做按键计数和动态扫描显示。
用if else,for写好了(35#),100多行,比较简短。

 
					
				 
			
			
			
						
			 
					
				 
					
				 西瓜霸再见~好多我看不懂的字母~
西瓜霸再见~好多我看不懂的字母~										 
					
				 不是吧。。。
不是吧。。。										 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

