//======================================================
开发编译的软件:MDK
开发板: 万利 STM3210B-LK1(199元)
看的资料:
《STM32F10X-128K-EVAL MCU》 ST公司 STM32开发板的电路图
《STM32技术参考手册.pdf 》
《Cortex-M3权威指南Cn.pdf》
《汉化STM32F的固件.rar》
STM32的编程前的一些介绍 :
一、硬件方面
1.把引脚BOOT1,BOOT0接地
2.33伏特供电,STM32就可以运行,无需外部接晶振。
3.芯片内部有复位电路。
4.STM32上电后默认使用内部【精度8MHZ左右】晶振,如果外部接了8MHZ,
可以切换使用外部8MHZ,并最终PLL(Phase Locked Loop:锁相环)倍频到72MHZ.
二、软件方面:
1.我们可以从万利公司或ST公司 给MDK公司写的STM32例子或者在网上找一些例子。
2.目前 STM32软件开发都是使用ST公司STM32库。
3.也可以自己先建立库,自己的头文件,建议初学者还是用stm32的库。
三、编写STM32程序,下面是几个必须掌握的文件
stm32f10x.h STM32头文件
cortexm3_macro.s 宏定义函数
stm32f10x_vector.c 中断初始化
stm32f10x_it.c 中断函数
main.c 主函数
//===================================================
// 完整例子:万利开发板上霓虹灯程序
// LED灯闪烁。
//===================================================
cortexm3_macro.s
stm32f10x_vector.c
stm32f10x_it.c
上面三个文件独立加入工程中。
而且stm32f10x_it.c 可以不加,如果不用中断
main.c内容:
#include "stm32f10x.h"
/** @addtogroup STM32F10x_StdPeriph_Examples
* @{
*/
/** @addtogroup GPIO_IOToggle
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
GPIO_InitTypeDef GPIO_InitStructure;
/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void); //复位时钟控制寄存器配置
void Delay(__IO uint32_t nCount);
/* Private functions ---------------------------------------------------------*/
/**
* @brief Main program.
* @param None
* @retval None
*/
int main(void)
{
/* System Clocks Configuration系统时钟配置 **********************************************/
RCC_Configuration();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
/* Initialize Leds mounted on STM3210E-LK board */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6| GPIO_Pin_5;//制定脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //制定模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//制定速度
GPIO_Init(GPIOC, &GPIO_InitStructure);//设置使之有效位
while (1)
{
/* Turn on LD1 */
//GPIO_SetBits(GPIOC, GPIO_Pin_4);
/* Insert delay */
//Delay(0xAFFFF);
/* Turn on LD2 and LD3 */
GPIO_SetBits(GPIOC, GPIO_Pin_7 | GPIO_Pin_6);//
/* Turn off LD3 */
//GPIO_ResetBits(GPIOC, GPIO_Pin_4);//关LED 这个是使用STM32库函数方法
/* Insert delay */
Delay(0xAFFFF);
/* Turn on LD4 */
GPIO_SetBits(GPIOC, GPIO_Pin_5);//开LED 这个是使用STM32库函数方法
/* Turn off LD2 and LD3 */
GPIO_ResetBits(GPIOC, GPIO_Pin_7 | GPIO_Pin_6);
/* Insert delay */
Delay(0xAFFFF);
/* Turn off LD4 */
GPIO_ResetBits(GPIOC, GPIO_Pin_5);
}
}
/**
* @brief Configures the different system clocks.
* @param None
* @retval None
*/
void RCC_Configuration(void)
{
/* Setup the microcontroller system. Initialize the Embedded Flash Interface,
initialize the PLL and update the SystemFrequency variable. */
SystemInit();
}
/**
* @brief Inserts a delay time.
* @param nCount: specifies the delay time length.
* @retval None
*/
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(uint8_t* file, uint32_t line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
/**
* @}
*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/