微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 智林STM32程序源代码的分析和整理03

智林STM32程序源代码的分析和整理03

时间:11-28 来源:互联网 点击:
一、Systick的配置

1、简单介绍

这是一个系统定时器,时钟源可以为AHB时钟,也可设置为SysClk/8。使用时先设定初始值,然后每来一个时钟,减去1,计数器为0时标志置位,也可触发中断。

在我的程序中,Systick用作usos的工作时钟。

2、我的源程序

void SysTick_Config(void){

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

SysTick_SetReload(72000*10);

//72MHz的频率下,计数72000需要1ms。

SysTick_ITConfig(ENABLE);

}

下面是中断服务程序

void SysTickHandler(void){

OS_CPU_SRcpu_sr;

OS_ENTER_CRITICAL();

OSIntNesting++; //中断嵌套计数

OS_EXIT_CRITICAL();

OSTimeTick();//ucos的时钟服务程序

OSIntExit();//这里可以触发任务切换软中断

}

二、GPIO的配置

1、PA口

PA0对应按键PB3,开发板右下角。PA1用于模拟电位器,JP1在这里。PA2用定时器的PWM产生液晶的背光电源。PA4-PA7用于SPI模式操作SD卡。PA9,PA10用于串口0通信。PA11,PA12是USB差分线。PA13、PA14、PA15是JTAG的三个脚。

PA3、PA8没用到。

2、PB口

PB0用于扬声器,PB2与JP4用于Boot1选择。PB3和PB4是JTAG的另外两个脚。PB5控制绿色指示灯,在SD卡上面。PB6、PB7用于I2C的存储器。PB8、PB9用于CAN收发器。PB11-PB15用于摇杆按键。

PB1和PB10没有用到

3、PC口

PC0到PC7用于液晶的数据口,PB8-PB12分别用于读、写、命令数据选择、复位和片选。PB13是PB2按键,在PB3左边。PB14-PB15外接32.768KHz晶振。

以上是开发板上各个IO口的用途,通用IO口先在这里配置,其它复用功能的在相应的功能里配置,以下是源程序。

4、程序

void GPIO_Config(void){

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最大速度50MHz

GPIO_Init(GPIOA, &GPIO_InitStructure);//对A口初始化

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_13| GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOC, &GPIO_InitStructure);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top