完整版STM32F103通用教程.docx

上传人:b****2 文档编号:1783212 上传时间:2022-10-24 格式:DOCX 页数:11 大小:18.73KB
下载 相关 举报
完整版STM32F103通用教程.docx_第1页
第1页 / 共11页
完整版STM32F103通用教程.docx_第2页
第2页 / 共11页
完整版STM32F103通用教程.docx_第3页
第3页 / 共11页
完整版STM32F103通用教程.docx_第4页
第4页 / 共11页
完整版STM32F103通用教程.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

完整版STM32F103通用教程.docx

《完整版STM32F103通用教程.docx》由会员分享,可在线阅读,更多相关《完整版STM32F103通用教程.docx(11页珍藏版)》请在冰豆网上搜索。

完整版STM32F103通用教程.docx

完整版STM32F103通用教程

STM32F103_使用心得

IO端口输入输出模式设置:

...........;

Delay延时函数:

..............;

IO端口使用总结:

...............;

IO口时钟配置:

................;

初始化IO口参数:

...............;

注意:

时钟使能之后操作IO口才有效!

......;

IO端口输出高低电平函数:

...........;

IO的输入

IO端口输入输出模式设置:

.....................1

Delay延时函数:

..........2

IO端口使用总结:

...............................2

IO口时钟配置:

........................................2

初始化IO口参数:

...................................2

注意:

时钟使能之后操作IO口才有效!

......................2

IO端口输出高低电平函数:

..................2

IO的输入和输出宏定义方式:

................3

读取某个IO的电平函数:

.......................3

IO口方向切换成双向............................3

IO口外部中断的一般步骤:

......................3

内部ADC使用总结:

..................................4

LCDTFT函数使用大全.................................5

TFTLCD使用注意点:

.................................5

IO端口宏定义和使用方法:

....................6

Keil使用心得:

................................6

ucGUI移植...................................6

DDSAD9850测试程序:

..........................6

ADC使用小结:

....................................7

ADC测试程序:

...................................9

DAC—tlv5638测试程序.........................9

红外测试程序:

.......................................9

DMA使用心得:

.................................9

通用定时器使用:

.........................9

BUG发现:

.................................10

编程总结:

.................................10

时钟总结:

.......................................10

汉字显示(外部SD卡字库):

...........11

字符、汉字显示(内部FLASH).......12

图片显示:

...........................................16

触摸屏:

..................................................17

引脚连接:

................19

IO端口输入输出模式设置:

Delay延时函数:

delay_ms(u16nms);

delay_us(u32nus);

IO端口使用总结:

1)使能IO口时钟。

调用函数为RCC_APB2PeriphClockCmd()。

2)初始化IO参数。

调用函数GPIO_Init();

3)操作IO。

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);

初始化IO口参数:

注意:

时钟使能之后操作IO口才有效!

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_InitTypeDefGPIO_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,&GPIO_InitStructure);//LED0-->PA.8端口配置//推挽输出

技巧:

如果为同一端口的不同引脚,可以使用或运算,如GPIO_InitStructure.GPIO_Pin=

GPIO_Pin_13|GPIO_Pin_15;

IO端口输出高低电平函数:

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&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}

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)

{

delay_ms(10);//消抖

if(EXTI_GetITStatus(EXTI_Line13)!

=RESET){}

elseif(EXTI_GetITStatus(EXTI_Line15)!

=RESET){}

EXTI_ClearITPendingBit(EXTI_Line13);//清除EXTI13线路挂起位

EXTI_ClearITPendi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1