СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №5/2013
чёными резисторами 1 кОм для огра ничения тока, можно наблюдать по очерёное зажигание светодиодов. В листинге 1 представлен проект на писанной на языке С программы Blinky.c, которая реализует функцию задержки, а в листинге 2 головной мо дуль программы проекта main. Данный проект на с троен под STM32F103RB, который отличает ся от рассматриваемого прибора STM32F100C4 большей функциональ ностью. Это позволит использовать все средства симуляции и виртуальные приборы средыразработки, поскольку при настройке проекта на использо вание МК STM32F100C4 некоторые элементы и функции симулятора бу дут недоступны. Процедуруперенастройкипроектана МК STM32F100C4 лучше осуществлять после отладки программы, непосред ственно перед созданием прошивки. Поэтомуможно смело скомпилировать проект, нажав F7, и запустить симуля тор средыс помощьюCtrl+F5. При этом откроется окно симулятора среды раз работки (см. рис. 9) ипоявится возмож ность пошагового выполнения про граммы и просмотра содержимого лю бых функциональных блоков МК. Теперь можно открыть окна для просмотра состояния регистров порта PB, используя команды Peripherals → → General Purpose I/O GPIOB, и наблю дать за их изменением в процессе по шагового выполнения программыс по мощью клавиш F11 и F10 или с по мощью команд менюDebug. Послетогокаквыубедитесьвнормаль нойработепрограммывсимуляторе,сле дует откорректировать настройку про екта и перекомпилировать проект для ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 16 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 5 2013 Листинг 2 /* Main Program * */ int main (void) { unsigned int i; /* LED variable */ RCC >APB2ENR |= (1UL << 3); /* Enable GPIOB clock */ GPIOB >CRH = 0x33333333; /* PB.8..16 defined as Outputs */ while (1) { /* Loop forever */ for (i = 1<<8; i < 1<<15; i <<= 1) { /* Blink LED 0,1,2,3,4,5,6 */ GPIOB >BSRR = i; /* Turn LED on */ wait (); /* call wait function */ GPIOB >BRR = i; /* Turn LED off */ } for (i = 1<<15; i > 1<<8; i >>=1 ) { /* Blink LED 7,6,5,4,3,2,1 */ GPIOB >BSRR = i; /* Turn LED on */ wait (); /* call wait function */ GPIOB >BRR = i; /* Turn LED off */ } } Листинг 1 /* wait function * */ void wait (void) { int d; for (d = 0; d < 2000000; d++); /* only to delay for LED flashes */ } Рис. 8. Основное окно программы Keil uVision 4
RkJQdWJsaXNoZXIy MTQ4NjUy