你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1085|回复: 2

【MCU实战经验】+STM32学习笔记(兵戈)

[复制链接]

3

主题

32

回帖

0

蝴蝶豆

初级会员

最后登录
2020-10-9
发表于 2014-4-21 12:09:52 | 显示全部楼层 |阅读模式
 STM32学习笔记
0.  注意:新建STM32工程时,添加STM32F10X_HD宏和设置头文件路径十分重要,弄不好久编译不了。有时头文件前需要打两点,有时一次设置路径不会成功,需多次设置。我就被这个困扰了好久。
1.       USART1通用同步异步收发器:
编程:
.初始化串口,因为串口也要用IO口进行收发数据,所以初始化串口时要申明两个结构化类型参数( GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;)分别对IO口和串口外设进行初始化。给两个结构化类型参数赋初值用来设置两个外设。IOTXPA09RXPA10调用IO口初始化外设函数GPIO_Init完成。USART1:调用串口初始化外设函数USART_Init完成。
.开启时钟。同上也要开启两个时钟源(RCC_APB2Periph_GPIOARCC_APB2Periph_USART1)。调用APB2时钟源开启函数RCC_APB2PeriphClockCmd完成。
3 .使能USART1外设,USART不同于IO口外设它要使能,调用使能USART外设函数USART_Cmd完成。
4 .编写输出打印函数,重定向Printf函数或自定义USART1_printf函数。
5 .Main.c中调用Printf函数或自定义USART1_printf函数在串口助手上显示要输出的信息。
6 .若有接收从上位机发来的信息时,要用到接收中断,在stm32f10x_it.c中编写中断服务函数。当然用到中断时要配置嵌套向量中断控制器NVIC。调用NVIC_Init函数完成,也要申明中断控制器结构体类型参数       NVIC_InitTypeDef NVIC_InitStructure;
注意:
1. 用的电源不稳定时,会造成串口接收的数据乱码。
2.  /数转换器(ADC):
    编程:AD采集通过串口显示电压,串口编程部分跳过
1.初始化串口。
2.初始化AD,写AD转换地址#define ADC1_DR_Address    ((u32)0x40012400+0x4c),使能ADC1DMA1的时钟,初始化串口IOPC.01。调用RCC_AHBPeriphClockCmd使能DMA1时钟,
3.调用RCC_APB2PeriphClockCmd使能ADC1时钟。设置PC.01为模拟输入模式不设置速率。配置ADC1的工作模式为DMA模式,设置DMA1外设的一系列参数配置,使能DMA1外设模块。
4.设置ADC1采样模式,配置一系列ADC1的参数。配置ADC1时钟,使能ADCDMA外设使能ADC外设模块。开启校准器,软件触发ADC转换。
5.在主函数中计算转换AD的值。用串口显示出来。
3.  RTC实时时钟  
 /*要想改变设置初值,就将下面if判断去掉直接上电就执行if后面的语句
(当然也要将后面的else去掉,否则会编译不过去)。做完上面的活编译
下载,在串口中设置时间初值(通过串口发送字符型数据)。不断电不复
位,再将if判断补上,时间初值就设定好了,下次打开无需在设置。*/ 
 
4. 野火液晶屏上的LCD.C中的void LCD_Str_ENCH_O_P(u16 x,u16 y,const u8 *str,u16 Color)中第1096行的有一个错误:    Tmp_y    += 8 ;错写成了     Tmp_x    += 8 ;导致液晶显示的时候遇到逗号就错位全文看不清。根据我的创作经验,可以将中文标点符号换成英文标点符号输出,而不是像野火那样仅仅将中文逗号换成空格,本人认为可以找出全部的中文标点符号的码值,再在调用字库前判断码值,如果是中文则换为英文符(因为一般汉字字库中没有标点符号的。如野火的这种。而英文字符库中标点都有,在液晶上显示时,中英文符号区别不大)。
  关于找码值:在文件中一个中文汉字的码值共16位。分为高低各八位,高八位为行,低八位为列。但这16位行列数据在文件中是分开存储的。要找到一个汉字或符号,必须先判断高八位(行数据)再判断低八位(列数据)低八位在高八位后一字节,如*str*(str+1)。例如:野火的液晶程序中没有中文标点符号。我修改后的程序中找中文符号码值就是用的这种方法。
 
5.移植彩屏触摸函数到别的工程中,不用再去编写彩屏驱动和LCD应用函数(如画圆,写字等)
  1.在工程USER中加入两个头文件asc_font.hascii.h
  2.在工程中添加四个文件(可直接复制到USER中再添加进工程)分别是lcd.clcd_botton.csystick.cTouch.c、和相应的头文件lcd.hlcd_botton.hsystick.hTouch.h、。
  3.修改stm32f10x_conf.h文件中包含的头文件,将彩屏需要的外设头文件的注释去掉。分别是: #include "stm32f10x_exti.h"
#include "stm32f10x_fsmc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_spi.h"
#include "misc.h"
   4.在工程界面的FWlib栏中添加misc.c stm32f10x_exti.c stm32f10x_fsmc.cstm32f10x_spi.c 四个函数。
   5.编写中断函数,在stm32f10x_it.c中编写void EXTI9_5_IRQHandler(void)中断服务函数,并加入头文件#include "stm32f10x_exti.h" #include "stm32f10x_tim.h"。触摸中断。
     在中断函数中加入
volatile unsigned char touch_flag=0;
extern void TimingDelay_Decrement(void);
extern void Delay_us(__IO u32 nTime);
   6.至此就可在工程中调用函数对彩屏进行操作。
6 文件系统移植:
  ff9里面的文件除OPTION00README外全部复制到USER中,并将CC936.c也复制到USER中,增加头文件搜索路径。在工程面板上的USER项中添加ff9中的C文件并在主函数中INCLUDE他们的头文件
 
 
已成功!
<
回复

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-22 10:47:30 | 显示全部楼层

RE:【MCU实战经验】+STM32学习笔记(兵戈)

楼主棒哒哒
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2016-10-4
发表于 2016-9-14 15:54:26 | 显示全部楼层
群主厉害的啊
,不错啊
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版