STM32 学习笔记 中断优先级理解

STM32 学习感悟

BRUCE posted @ 2012年4月02日 00:29 in STM32 , 1651 阅读

      在学习stm32 之前,编程风格可以说是非常烂的,大量的使用全局变量,函数即没返回也没输入,注释混乱,命名无根据。在它的固件库中有着许多规范的命名,调用等方式,已经很多C语言巧妙的使用。

      毕竟自己做了款学习板所以程序也要亲力亲为了,思前想后的,最后决定不能像市场的货那样,一款一个单,一个模块一个程序,实在是只能让人知道怎么读读数据而已。要为我后面的设计打基础,必须要有像样点的小规模级别上的程序才能训练我,最后还决定,把模块程序一个一个的集合到一起,形成一个大集合,像操作系统一样,给一个命令就做那事情,不需要,要那个功能就烦人的又烧一次程序。

      关于功能实现先与状态机模式实现,并行的情况后面深入了之后必须要再做一次研究,以超级终端为上位机做控制,当然没有超级终端的win7 可以用SecureCRT 这个软件,同样的终端功能,设置好串口相应设置后即可做通讯。单片机与其的通讯只能采用字符的形式出现,不支持直接看8位数据。

现在构造了两级菜单,总体感觉还行,但对这控制模式还说不清,毕竟自己设计的很难说缺点,查错误。

主级控制:

第二级控制菜单1:

第二级控制菜单1:

在非循环型工作中也并非要做到一个大循环体中,如主页和时钟选择,只要等待接收缓存发生变化后检查缓存值便可以做先关动作了。

 int main(void)
{ ………………// 省略初始化数据 和寄存器
     while (1)
     { switch(Sys_State)
	{
     /*------进入时钟选择-----------*/
	case '1':   
	  TempState='\0';
	  Receive_buffer='\0';
	  RCCUart_Display();
	  while(Receive_buffer!='0')
	    {  
	      if(TempState!='\0')
		{ 
		  RCC_ConfigControl(TempState);RCCUart_Display();Receive_buffer='\0';
		}
    /*---------动作后再做缓存检查----------------------*/
	      TempState=Receive_buffer;
	    }
	  break;

	  /*************************************************************/
	case '2':
	  TempState='0';
	  LedState='1';
	  Receive_buffer='1';
	  //  LEDUart_Display(LedState);
	  while(Receive_buffer!='0')
	    {
	      LedState=Receive_buffer; 		
      
	      if(TempState!=LedState)
		{TempState=LedState;LEDUart_Display(LedState);}	//数据变化,每次循环变化一次,实现跑马灯移动      

	      LED_Display(LedState,&LedData);
	      GPIO_Write(GPIOE,LedData);
	      delay_MS(1000);
	    }
	  break;

	  /*************************************************************/
	case '3':

	  break;

	  /*************************************************************/	  
	default :
	  
	  MAIN_Display();
	  while(Receive_buffer=='0')
	    {}
	  
	  break;
	}

	Sys_State=Receive_buffer;	  
    }

 

两个菜单均以状态机模式循环,并检查到退出控制命令符才得以跳出至上一级菜单。如果要做多级,还真有点复杂,判断太多了,得抽个时间看看操作系统的思路

 

 

 

seo service london 说:
2024年1月16日 19:25

Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter