首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

芯片应用总结更新

芯片应用总结更新

Stm32简要说明       一个外设,只有设置好之后才让它工作,故在stm32中操作外设时,配置完成之后,都有一个使能。Stm32中,调用库函数对外设初始化时,传递的参数有一个结构体型指针,注意定义变量时先定义为普通变量,然后把此地址传递过去(也可定义为指针,但要先给指针自己个地址,否则为野指针,此类错误较隐蔽,特别注意指针)。
Stm32首先是开启相应的外设时钟,再者是用到哪一个端口,就配置相应端口的功能。之后开始思考如何与外设通信,通信道路建立完成之后,就先完成外设的初始化。之后就可编写相应的应用程序,完成相应的功能。
硬件i2c与软件i2c基本上是同一个意思,硬件时也要按照通信的步骤,一步步设置寄存器,产生相应的功能。方便之处是如接收数据,到相应的寄存器读取即可。(其实感觉硬件不方便啊,自己理解:硬件i2c可以用dma方式,也可以每个处理完成之后产生一个事件,然后产生中断(观察硬件连接,要产生随机中断,硬件必须满足,例
再继续处理,更充分利用cpu)(硬件好像是为你提供了多种选择的一个框架,根据数据手册设置即可。会设置也就能写出软件模拟的了)(还有标志位,可随时查看状态。)
Stm32分配给外设的有一段空间,这个空间的起始地址就是外设基地址,而不同的外设挂载在不同的总线上,故每个总线也有个起始地址,叫总线基地址。


配置一个模式只需要4位,为什么此处有8位


相当于有的位是标示位,是输入还是输出。
液晶       对于此液晶显示,因为不含字库,故需添加字库,例英文字库,先用字模软件生成ascll码字库。(其实对于液晶显示就是判断每一位,是1则该像素亮,否则灭),液晶显示的一个重要函数是生成窗口函数(液晶显示基本是显示完一行后就会自动换行,开始下一行的显示,而窗口函数也相当于规定显示的起始点,与一行的结束点,也即在哪开始,在哪换行)(液晶各点位置使用坐标表示的,要操作某点,先要知道坐标,在利用开窗函数,再显示)(对于触屏,也即利用一定的换算关系,确定接触点的坐标,再产生相应的动作。)
我们在编写程序显示某一个字符,例‘A’,可直接写’A‘(可能编译软件中含有字模,实际编译时会解析为对应的ascll码(一个16进制数,规定其就代表对应的字符,实际解析的是ascll,因为字模中的字符是按一定规律排列的,故根据其ascll码可找到对应的字模,然后提取,进行显示。也可在字库的每个字模的开头写上对应的字符,然后先判断ascll码值是否相同,若相同则提取,进行显示)(对于汉字,因较多,用的两个字节表示的)。
自制字库显示方法:
[cpp] view plain copy


  • #include <stdio.h>
  • #define STR_WIDTH           6            /* 字符宽度 */
  • #define STR_HEIGHT          12           /* 字符高度 */
  • /*
  • * 常用ASCII表,偏移量32,大小:12(高度)*6 (宽度)
  • */
  • const unsigned char asc2_1206[95][12]={  
  • {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"",0*/
  • {0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00},/*"!",1*/
  • ..........................................  
  • char i = 1;      /*! */

  • int main()  
  • {  
  •        chartemp = 0, page = 0, column = 0;  

  •        for(page=0; page < STR_HEIGHT; page++ )  
  •        {  
  •               temp= asc2_1206[page];  

  •               for(column=0; column < STR_WIDTH; column++ )  
  •               {  
  •                      if(temp & 0x01 )  
  •                      {  
  •                             printf(" * " );  
  •                      }  
  •                      else
  •                      {  
  •                             printf(" . " );                                                   
  •                      }  
  •                      temp>>= 1;                  
  •               }  
  •               printf("\n" );         /* 写完一行 */
  •        }  
  •        printf("\n" );                /* 全部写完 */
  • }  


显示为:


注意此处生成的字库相当于和平常思维相反,此开头为低位。
此处制作的字库,12*6,即高度为12,宽度为6。显示即可先开一个12*6的窗口,提取一个数据,判断各位是0还是1,是1则显示,是0,则不显示。因为宽度为6,所以只需6位即可表示,而一个字节8位,头两位不用为0.(其实为什么这样,可以想一下是如何制作字模的,如上图,把液晶想象为一块方板,上面有一排排的点,可以发光,因为宽度为6.所以一行我只需6个点,高度为12,所以需要12行,有6个点,可以用8位,也即一个字节表示一行中哪个点亮(多出的两个位用0表示,判断时可忽略),故判断6位即可。所以有12个字节。)
,画出坐标容易分析,不同的设置有不同的扫描方式。根据屏幕来确定开窗的长宽(此处x方向为宽,y为长。与扫描方式有关,注意理解,若扫描方向向下,若xy不变,则x方向为长,y为宽)。

对于芯片的操作我感觉考察的主要是理解能力与英文能力,需要的是耐心与细心。而应用程序考察的主要是编程能力与全局意识。(原材料、零件、产品)
中文编码


操作系统简要       操作系统从广义讲就是管理计算机的软硬件资源,其实主要的就是任务调度,例如优先级管理的,一个高优先级的任务来了,需要运行,但此时运行着其他任务的,我怎么样获取cpu,被中断的那个任务下次运行时怎么从被中断处继续运行,怎么与其他的任务进行通讯。进入延时函数后怎么释放cpu,给哪个任务等,这就是操作系统的事。对于硬件管理就是让不让该任务访问等。
返回列表