4095*4095*256 = FFE00100 - в uint32 укладываемся
4095*4095*256 = FFE00100 - в uint32 укладываемся
Можно делать и так если процессорного времени не жалко, но надо не забыть в цикле вставить ожидание. когда ADC новый результат оцифрует и положит в регистр.stemplar писал(а):Стоп стоп стоп.Код: Выделить всё
i=0; while (i<65) { i++; sum=sum+volt; } sum=sum\64;
Код: Выделить всё
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
unsigned int i=0;
void Delay(uint32_t a)
{
uint32_t i;
for (i=0; i<a; i++) {};
}
int main()
{
GPIO_InitTypeDef port;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_StructInit(&port);
port.GPIO_Mode = GPIO_Mode_Out_PP;
port.GPIO_Pin = GPIO_Pin_6;
port.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &port);
while(1)
{
Delay(1000);
GPIO_SetBits(GPIOB, GPIO_Pin_6);
Delay(1000);
GPIO_ResetBits(GPIOB, GPIO_Pin_6);
}
}... а чем не устраивают примеры из самого Keil_a? папка \ARM\Board\ST ...eess9 писал(а):основываясь на ....... Что я сделал неверно?
Может слишком часто просто мигает? 1000 раз прокрутить пустой цикл это мало совсем, да и от частоты зависит сильно.eess9 писал(а):Код: Выделить всё
void Delay(uint32_t a) { uint32_t i; for (i=0; i<a; i++) {}; } Delay(1000);
... в таком случае светодиод бы светился....balmer писал(а):Может слишком часто просто мигает?
... если хотите, чтобы работало - не нужно "самодеятельности" с подключением. Когда подключите в соответствии с рекомендациями datashet_a все заработает.....Боюсь что у меня какая-то проблема в самом железе. +3.3В приходит на VDD6 и AVDD. На остальное цифровое питание внутри контроллера соединено и нет смысла тянуть 3.3В ко всем ногам VDD1, VDD2 и т.д. С землей тоже самое..
Код: Выделить всё
uint16_t k;
k = 'А'; //русская АКод: Выделить всё
void interrupt_init(void)
{
NVIC_SetPriority(EXTI0_IRQn, 15); /* Назначить прерываниям от EXTI0 самый низкий проритет. */
NVIC_EnableIRQ(EXTI0_IRQn); /* Разрешить прерывания от EXTI0 в NVIC. */
}
void EXTI0_IRQHandler(void) {
if (EXTI->PR & (1<<0)) { /* если произошло прерывание от EXTI0 */
EXTI->PR|=(1<<0); /* В процессе обработки прерывания в регистре EXTI_PR
записью единицы необходимо сбросить флаг события вызвавшего данное прерывание.*/
/*--------------------- Обработка события EXTI0 -----------------------------*/
if (GPIOA->IDR & 1) {
for (int button = 0; button < 15; button ++ )
flag=!flag;
}
}
}Код: Выделить всё
if (GPIOA->IDR & 1) {
for (int button = 0; button < 15; button ++ )
flag=!flag;
} Да ее всем делают, только по моему программное устранение задержки - это какое-то извращение. Неужели трудно поставить на вход RC-цепочку?uk8amk писал(а):Разве задержку антидребезга не таймером делают?
Опечатка?menzoda писал(а):программное устранение задержки
Юзать прерывания - моветон, в данном случае. STM просто привёл это как пример для знакомства с прерываниями, это не руководство к действию.amv2000 писал(а):в данном случае настроил прерывание на кнопку PA0 платы Дискавери.
menzoda писал(а):только по моему программное устранение задержки - это какое-то извращение. Неужели трудно поставить на вход RC-цепочку?
Не спорьте... в разных случаях всё по разному будет...Foks писал(а): Программное устранение дребезга гибко настраивается, уменьшает число внешних деталей (как следствие и цену изделия), не зависит от внешних факторов (температура, etc) - по-моему, преимуществ достаточно.