Код: Выделить всё
gpio.GPIO_Mode = GPIO_Mode_AF_PP;
gpio.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOD, &gpio);
Код: Выделить всё
gpio.GPIO_Mode = GPIO_Mode_AF_PP;
gpio.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOD, &gpio);
baghear писал(а):с какой частотой будет работать выход?
Код: Выделить всё
Биты MODEy определяют направление вывода и скорости переключения
* в режиме выхода:
* MODEy[1:0] = 00: Режим входа (состояние после сброса);
* MODEy[1:0] = 01: Режим выхода, максимальная скорость – 10МГц;
* MODEy[1:0] = 10: Режим выхода, максимальная скорость – 2 МГц;
* MODEy[1:0] = 11: Режим выхода, максимальная скорость – 50МГц.
* Биты CNF задают конфигурацию выходных каскадов соответствующих выводов:
* в режиме выхода:
* CNFy[1:0] = 00: Двухтактный выход общего назначения Out_PP;
* CNFy[1:0] = 01: Выход с открытым стоком общего назначения Out_OD;
* CNFy[1:0] = 10: Двухтактный выход с альтернативной функцией AF_PP;
* CNFy[1:0] = 11: Выход с открытым стоком с альтернативной функцией AF_OD.
* в режиме входа:
* CNFy[1:0] = 00: Аналоговый вход AIN;
* CNFy[1:0] = 01: Вход в третьем состоянии (состояние после сброса) IN_FLOATING;
* CNFy[1:0] = 10: Вход с притягивающим резистором IPU, IPD
* pull-up (если PxODR=1) или pull-down (если PxODR=0);
* CNFy[1:0] = 11: Зарезервировано. baghear писал(а):А в каком режиме он включается
baghear писал(а):а в каком режиме непонятно пока..
balmer писал(а):Да нужно. Можно посмотреть в сэмпликах - везде настраивается. Бывают особые случаи, когда часть настроек потом изменяются в AF. Например SPI может переключать на вход/выход ножки в зависимости от NSS.
в разделе об альтернативных функциях как раз и приводится - GPIO configurations for device peripheralsИли плохо смотрел.
Код: Выделить всё
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
int main(void)
{
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
RCC->APB2ENR = RCC_APB2Periph_GPIOA;
GPIOA->CRL &= ~GPIO_CRL_CNF0;
GPIOA->CRL |= GPIO_CRL_MODE0;
while(1)
{
GPIOA->BSRR = GPIO_BSRR_BR0;
GPIOA->BSRR = GPIO_BSRR_BS0;
}
}

balmer писал(а):Для 100 КГц I2С и коротких проводов - резистора 10 КОм более чем достаточно. Если частота выше или там провода на пару метров - то уже надо смотреть, может и не хватить.
baghear писал(а):Добрый вечер, подскажите пожалуйста при дергании ножки в ручную частота переключения составила 4MHz.
На выходе MCO установил SYSCLK, осциллограф показал 72MHz.
Изменение максимальной скорости вывод изменяет лишь амплитуду, частота остается та же.
P.S логический анализатор в Keil показывает то же самое.
Код: Выделить всё
GPIOA->BSRR = GPIO_BSRR_BR0;
GPIOA->BSRR = GPIO_BSRR_BS0;
GPIOA->BSRR = GPIO_BSRR_BR0;
GPIOA->BSRR = GPIO_BSRR_BS0;
GPIOA->BSRR = GPIO_BSRR_BR0;
GPIOA->BSRR = GPIO_BSRR_BS0;
GPIOA->BSRR = GPIO_BSRR_BR0;
GPIOA->BSRR = GPIO_BSRR_BS0;