Photo by Google DeepMind on <a href="https://www.pexels.com/photo/an-artist-s-illustration-of-artificial-intelligence-ai-this-image-represents-the-role-of-ai-in-computer-optimisation-for-reduced-energy-consumption-it-was-created-by-linus-zoll-as-part-18069082/" rel="nofollow">Pexels.com</a>
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
void Delay(__IO uint32_t nCount);
int main(void) {
SystemInit();
SystemCoreClockUpdate();
// Enable peripheral clock for GPIOC
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// Configure GPIOC Pin 13 as Output push-pull (on-board LED)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1) {
// Toggle the LED on and off
GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)));
Delay(500000); // Delay for a while
}
}
void Delay(__IO uint32_t nCount) {
while (nCount--) {
}
}
Code language:PHP(php)
Delay using Systick Timer
#include "stm32f10x.h"
GPIO_InitTypeDef GPIO_InitStructure;
volatile uint32_t TimingDelay;
void SysTick_Handler(void) {
if (TimingDelay != 0) {
TimingDelay--;
}
}
void Delay_ms(__IO uint32_t nTime);
void Delay_us(__IO uint32_t nTime);
int main(void) {
SystemInit();
SystemCoreClockUpdate();
// Enable peripheral clock for GPIOC
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// Configure GPIOC Pin 13 as Output push-pull (on-board LED)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// SysTick configuration for 1ms interruptsif (SysTick_Config(SystemCoreClock / 1000)) {
while (1); // Handle error
}
while (1) {
// Toggle the LED on and off every 500ms
GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)));
Delay_ms(500);
}
}
void Delay_ms(__IO uint32_t nTime) {
TimingDelay = nTime;
while (TimingDelay != 0);
}
void Delay_us(__IO uint32_t nTime) {
// Assuming a 72 MHz clock, each instruction takes approximately 13.89 ns.
nTime *= 13; // Adjust for the approximate number of instructions in the loopwhile (nTime--);
}
Code language:PHP(php)
LED blinking with Sleep
#include "stm32f10x_conf.h"#include <stm32f10x.h>#include <stm32f10x_gpio.h>/* A Led blink lab for STM32 Discovry Disco *
* Based on: *
* Discovering the STM32 Microcontroller by Geoffrey Brown. */
void setupLED(GPIO_InitTypeDef *LED_InitStruct);
void sleep(uint32_t nSec);
int main(int argc, char **argv)
{
int LEDVal = 0;
GPIO_InitTypeDef LED_InitStruct;
/* Setup LED */
setupLED(&LED_InitStruct);
/* Setup timer interrupt interval to nano second */if(SysTick_Config(SystemCoreClock / 1000)) {
while(1); /* Trap here if failed */
}
/* Blinking LED3 and LED4 */while(1) {
GPIO_WriteBit(GPIOC, GPIO_Pin_13 , LEDVal);
sleep(250);
LEDVal = !LEDVal;
}
return0;
}
void setupLED(GPIO_InitTypeDef *LED_InitStruct)
{
/* Setup LED GPIO */// Enable peripheral clock for GPIOC (used for on-board LED)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_StructInit(LED_InitStruct);
LED_InitStruct->GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 ;
LED_InitStruct->GPIO_Mode = GPIO_Mode_Out_PP;
LED_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, LED_InitStruct);
}
static __IO uint32_t g_timeToWakeUp;
void sleep(uint32_t nSec)
{
g_timeToWakeUp = nSec;
/* Busy waiting */while(g_timeToWakeUp != 0);
}
/* ISR for system tick */
void SysTick_Handler(void)
{
if (g_timeToWakeUp != 0x00) {
g_timeToWakeUp--;
}
}
/* Trap here for gdb if asserted */
void assert_failed(uint8_t* file, uint32_t line)
{
while(1);
}Code language:PHP(php)
My name is Abdul Rehman and I love to do Reasearch in Embedded Systems, Artificial Intelligence, Computer Vision and Engineering related fields. With 10+ years of experience in Research and Development field in Embedded systems I touched lot of technologies including Web development, and Mobile Application development. Now with the help of Social Presence, I like to share my knowledge and to document everything I learned and still learning.