STM32F103通用教程Word格式文档下载.docx
- 文档编号:13462801
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:12
- 大小:21.05KB
STM32F103通用教程Word格式文档下载.docx
《STM32F103通用教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《STM32F103通用教程Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
io端口输出高低电平函数:
io的输入和输出宏定义方式:
3
读取某个io的电平函数:
io口方向切换成双向3
io口外部中断的一般步骤:
内部ADC使用总结:
4
LCDTFT函数使用大全5
TFTLCD使用注意点:
5
IO端口宏定义和使用方法:
6
Keil使用心得:
ucGUI移植6
DDSAD9850测试程序:
ADC使用小结:
7
ADC测试程序:
9
DAC—tlv5638测试程序9
红外测试程序:
9
DMA使用心得:
通用定时器使用:
BUG发现:
10
编程总结:
10
时钟总结:
10
汉字显示(外部SD卡字库):
11
字符、汉字显示(内部FLASH)12
图片显示:
16
触摸屏:
17
引脚连接:
19
delay_ms(u16nms);
delay_us(u32nus);
1)使能IO口时钟。
调用函数为RCC_APB2PeriphClockCmd()。
2)初始化IO参数。
调用函数GPIO_Init();
3)操作IO。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&
GPIO_InitStructure);
//上拉输入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&
//LED0-->
PA.8端口配置//
推挽输出
技巧:
如果为同一端口的不同引脚,可以使用或运算,如
GPIO_InitStructure.GPIO_Pin=
GPIO_Pin_13|GPIO_Pin_15;
GPIO_SetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_9);
//PA.8输出高GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);
//可以输出1,也可以输出0
GPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);
//整体输出一个
值
IO的输入和输出宏定义方式:
#defineDATAOUT(x)GPIOB->
ODR=x;
//数据输出
#defineDATAINGPIOB->
IDR;
//数据输入
#defineDATAOUT(DataValue)
{GPIO_Write(GPIOB,(GPIO_ReadOutputData(GPIOB)&
0xff00)|(DataValue&
0x00FF));
}//PB0~7,作为数据线
读取某个IO的电平函数:
(一)读出一个IO口电平
GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)
#defineKEY0GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_13)//PA13
#defineKEY1GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)//PA15
#defineKEY2GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
(二)读出某个IO口的全部电平
GPIO_ReadInputData(GPIOC)
IO口方向切换成双向
IIC里面的一个实例
#defineSDA_IN(){GPIOC->
CRH&
=0XFFFF0FFF;
GPIOC->
CRH|=8<
<
12;
}//PC12
#defineSDA_OUT(){GPIOC->
CRH|=3<
}
IO口外部中断的一般步骤:
1)初始化IO口为输入。
2)开启IO口复用时钟,设置IO口与中断线的映射关系。
3)初始化线上中断,设置触发条件等。
4)配置中断分组(NVIC),并使能中断。
5)编写中断服务函数。
例程:
开启IO口复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
GPIOA.13中断线以及中断初始化配置GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);
EXTI_InitTypeDefEXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line13;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
//[此外
还可以为(EXTI_Trigger_Rising,EXTI_Trigger_Rising_Falling)]EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&
EXTI_InitStructure);
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
//使能按键所在的外部中断通道//[此外还可以为
NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn];
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;
//抢占优先级2,NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01;
//子优先级1NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
//使能外部中断通道NVIC_Init(&
NVIC_InitStructure);
中断函数的编写:
(蓝色字体为格式)
voidEXTI0_IRQHandler(void)
{
delay_ms(10);
//消抖
if(EXTI_GetITStatus(EXTI_Line0)!
=RESET)//检查指定的EXTI0线路
触发请求发生与否{
LED0=!
LED0;
LED1=!
LED1;
EXTI_ClearITPendingBit(EXTI_Line0);
//清除EXTI0线路挂起位}
voidEXTI15_10_IRQHandler(void)
//消抖if(EXTI_GetITStatus(EXTI_Line13)!
=RESET){}elseif(EXTI_GetITStatus(EXTI_Line15)!
=RESET){}
EXTI_ClearITPendingBit(EXTI_Line13);
//清除EXTI13线路挂起位
EXTI_ClearITPendingBit(EXTI_Line15);
//清除EXTI15线路挂起位
1)STM32F103系列最少都拥有2个ADC我们选择的STM32F103RBT也包含有2个ADC。
2)STM32的ADC最大的转换速率为1Mhz也就是转换时间为1us(在
ADCCLK=14M采样
周期为1.5个ADC时钟下得到),不要让ADC的时钟超过14M否则将导致结果准确度下降。
3)STM32将ADC的转换分为2个通道组:
规则通道组和注入通道组。
规则通道相当于你
运行的程序,而注入通道呢,就相当于中断。
在你程序正常执行的时候,中断是可以打断你的执行的。
同这个类似,注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才得以继续转换。
4)STM32ADC勺规则通道组最多包含16个转换,而注入通道组最多包含4个通道。
5)STM32的ADC在单次转换模式下,只执行一次转换,该模式可以通过ADC_CR寄存器
的ADON位(只适用于规则通道)启动,也可以通过外部触发启动(适用于规则通道和注入通道),这是CONT位为00
6)寄存器ADC_CR操作模式:
ADCO位用于幵关AD转换器。
而CONT位用于设置是否
进行连续转换,我们使用单次转换,所以CONT位必须为0。
CAL和RSTCAL
用
7)于AD校准。
ALIGN用于设置数据对齐,我们使用右对齐,该位设置为
0。
8)中文参考手册中有详细的描述
9)关于通道:
每个通用定时器都有四个通道,这四个通道都可以配置成分别不同的模式。
LCDTFT函数使用大全
画笔颜色,背景颜色的定义,在使用前要设置POINT_COLOR
POINT_COLOR
在切换方向的时候,一定不能偷懒;
75ARM_STM32F103_使用心得
;
delay_ms(u16nms);
;
delay_us(u32nus);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32F103 通用 教程