这只是个封面,正文在下面 本人对单片机已经执着了十多年,做过的单片机项目不计其数,内心深处总是有一股给大家分享技术经验的冲动。 这次给大家呈现的是STM8S003单片机软件开发必须有的初始化软件代码,已经都替你调试好了,已经在批量产品中用上了,拷过去就能用了,你还等什么? 赶 紧 收 藏 啊! #include 'stm8s.h' #include 'stm8s_clk.h' #include 'stm8s_gpio.h' static void MCU_PORT_Init(void); static void MCU_CLK_Init(void); static void MCU_SYS_Init(void); static void IWDG_Config(void); void MCU_Init(void) { MCU_PORT_Init(); MCU_CLK_Init(); MCU_SYS_Init(); } static void MCU_PORT_Init(void) { GPIOA->CR2 = 0x00; GPIOA->ODR = 0x00; GPIOA->DDR = 0x04; GPIOA->CR1 = 0xFF; GPIOA->CR2 = 0x00; GPIOB->CR2 = 0x00; GPIOB->ODR = 0x00; GPIOB->DDR = 0x00; GPIOB->CR1 = 0xFF; GPIOB->CR2 = 0x00; GPIOC->CR2 = 0x00; GPIOC->ODR = 0x00; GPIOC->DDR = 0xE0; GPIOC->CR1 = 0x1F; GPIOC->CR2 = 0x00; GPIOD->CR2 = 0x00; GPIOD->ODR = 0x00; GPIOD->DDR = 0x18; GPIOD->CR1 = 0xDF; GPIOD->CR2 = 0x00; } static void MCU_CLK_Init(void) { //4分频, fmaster=4MHz CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4); CLK_HSICmd(ENABLE); while (CLK_GetSYSCLKSource() != CLK_SOURCE_HSI){;} CLK_LSICmd(ENABLE); while (CLK_GetFlagStatus(CLK_FLAG_LSIRDY) = RESET){;} } static void MCU_SYS_Init(void) { IWDG_Config(); } void IWDG_Config(void) { IWDG_Enable(); IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); IWDG_SetPrescaler(IWDG_Prescaler_128); IWDG_SetReload(249); IWDG_ReloadCounter(); } void main(void) { MCU_Init(); enableInterrupts(); /* enable interrupts */ for(;;) { IWDG_ReloadCounter(); /* feeds the dog */ /* 此处添加你自己的应用软件代码或函数 */ } } 附:STM8S003单片机最小系统原理图 没看懂?在下面留言吧,放心,我会回复你的。后面我还会逐步分享更多的干货,别急,慢慢来。 结束语:单片机学习其实就是入门稍微难一点,但如果懂了C语言,又有微机原理基础,学起来其实不会难。虽然世界上的单片机有上千种,但我们不需要把每一种都学会,只需要学会一种,以后学第二种就很容易上手了。 可能很多单片机初学者在起步编写第一个单片机程序时会难以下手,建议大家在起步阶段直接拷贝一些现成的程序,让单片机先跑起来再说,然后再细细琢磨每一条语句,再然后就可以开发自己的单片机程序了。 |
|