0
1) Кат для чего?
2) Делал по инструкции с we.easyelectronics.ru/page/about/, почему не видно — не знаю.
0
:) Прикольный ответ дает гугл по поиску: TI — QEP.
Да, у ТИ есть такой модуль в 32-разрядные DSP-микроконтроллерах TMS320x2833x.

(eQEP)The enhanced quadrature encoder pulse (eQEP) module is used for direct interface with a linear or rotary incremental encoder to get position, direction, and speed information from a rotating machine for use in a high-performance motion and position-control system
Не знаю, что можно с помощью него делать, может у стм есть такое же, но они это не называли столь звучно.
Если работали, то расскажите, с чем его едят.
0
Приращение==изменение
0
Поздравляю!
0
Я так понимаю, у автора получилось проигрывать стерео звук.

А вот мне вчера идейка пришла, добавить «простую» схему и «запаралелить» 2 ЦАПа на исходном проце, а второй канал получить точно также, если взять еще самый дешевенький стм32ф100с4, его использовать как цап тоже с «запаралелеными» ЦАПами. Вот уже имеем 24 бита на канал :)
0
Да, они определены в файле stm32f10x_gpio.h
/** @defgroup GPIO_pins_define
* @{
*/

#define GPIO_Pin_0 ((uint16_t)0x0001) /*!< Pin 0 selected */
#define GPIO_Pin_1 ((uint16_t)0x0002) /*!< Pin 1 selected */
#define GPIO_Pin_2 ((uint16_t)0x0004) /*!< Pin 2 selected */
#define GPIO_Pin_3 ((uint16_t)0x0008) /*!< Pin 3 selected */
#define GPIO_Pin_4 ((uint16_t)0x0010) /*!< Pin 4 selected */
#define GPIO_Pin_5 ((uint16_t)0x0020) /*!< Pin 5 selected */
0
К сожалению я был не прав. И вышеуказанный макрос не работал.
Хочу

#define led1 GPIOC, GPIO_Pin_13
GPIO_MULTI_INIT(led1,GPIO_MODE_OUTPUT50_PUSH_PULL);

Заставить работать такое удалось добавлением в gpio_init.h

#define GPIO_MULTI_INIT(...) GPIO_MULTI_INIT_(__VA_ARGS__)
#define GPIO_MULTI_INIT_(PORT,PIN_MASK,PIN_MODE)…

так же, после этого мульти инит работает и в таком виде, в каком работал

GPIO_MULTI_INIT(GPIOC ,GPIO_Pin_13,GPIO_MODE_OUTPUT50_PUSH_PULL);
GPIO_MULTI_INIT(GPIOC ,BIN(0010000000000000),GPIO_MODE_OUTPUT50_PUSH_PULL);

Так же в таком контексте работают стандартные функции- например
GPIO_SetBits(led1);
что удобно и дает единообразный способ работы с пинами.

Главное — не забывать включать тактирование шины и порта. Но это тоже можно автоматизировать, или включать все сразу.
0
Еще ГЦЦ вот так понравилось
#define GPIO_MULTI_INIT(...) GPIO_MULTI_INIT(__VA_ARGS__)

GPIO_MULTI_INIT(TX1,GPIO_MODE_OUTPUT50_ALT_PUSH_PULL);

Без дефайна не компилил. Сразу попробовал с подчеркиванием как у вас, но, после прочтения docstore.mik.ua/manuals/ru/cpp/cpp-5.html особенности рекурсивного макроса, попробовал без _… вроде получилось.
0
Уважаемые блогеры, есть вопросик по макросам.

#define TX1 GPIOA, GPIO_Pin_9
GPIO_Init(GPIOA, &GPIO_InitStructure);
Хочу сделать что то типа

#define port(a,b) a
GPIO_Init(port(TX1), &GPIO_InitStructure);

Вот так не хавает, тоесть не делает подстановку в макро port вместо TX1 — GPIOA, GPIO_Pin_9
Вопрос в следующем. как делать то что я хочу, где про это лучше всего почитать?

ПС. Прошу обсуждать не включение порта А (взятый для примера), а суть макросов.
0
Я имел ввиду остальную периферию. Можете добавить(в вариант с ст либ), увеличивается до 2548. Имхо, если делать ч регистры, будет значительно меньше. Не забудьте включить оптимизацию.
П.С. 1 кило имел ввиду 1 кБ полученных по правилам округления. 500 ~ 1499 байт.,
#ifdef MoreProof
	USART_InitTypeDef USART_InitStructure;                                //для инициализации USART

	//настройка модуля USART
		//RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1,ENABLE);
		USART_InitStructure.USART_BaudRate            = 9600;
		USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
		USART_InitStructure.USART_StopBits            = USART_StopBits_1;
		USART_InitStructure.USART_Parity              = USART_Parity_No ;
		USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
		USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
		USART_Init(USART1, &USART_InitStructure);


			//настроить выводы, к которым подключены RX и TX
			//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);                 //тактирование GPIOA
			GPIO_InitStructure.GPIO_Pin= GPIO_Pin_10;          //линия RX
			GPIO_InitStructure.GPIO_Mode                  = GPIO_Mode_IN_FLOATING;//вход, третье состояние
			GPIO_Init(GPIOA, &GPIO_InitStructure);                                //выполнить инициализацию
			GPIO_InitStructure.GPIO_Pin                   = GPIO_Pin_9;           //линия TX
			GPIO_InitStructure.GPIO_Speed                 = GPIO_Speed_50MHz;     //макс частота сигнала
			GPIO_InitStructure.GPIO_Mode                  = GPIO_Mode_AF_PP;      //альтернативный выход
			GPIO_Init(GPIOA, &GPIO_InitStructure);                                //выполнить инициализацию



		// enable usart1 interrupt
			NVIC_InitTypeDef NVIC_InitStructure;
			NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
			NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
			NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
			NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
			NVIC_Init(&NVIC_InitStructure);
			USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
			NVIC_EnableIRQ(USART1_IRQn);//???
		USART_Cmd(USART1, ENABLE);
#endif
0
Вот и получается, 5 раз «поструктурировал» — минус кило флеша…
Мне нравится идея автора, имхо есть смысл и остальное конфигурирование похоже сделать. А хедер назвать по имени автора :)
+1
Стало интересно, а в коментах не нашел.
Попробовал в кокосе+гцц с включенной оптимизацией по размеру -Os:
#include "stm32f10x_gpio.h"
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "GPIO_INIT.h"
#define st_lib
int main(void)
{
#ifdef st_lib

	GPIO_InitTypeDef  GPIO_InitStructure;                                 //для инициализации порта
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	// leds init on pa0,1
	GPIO_InitStructure.GPIO_Pin                   = GPIO_Pin_11|GPIO_Pin_10;//leds
	GPIO_InitStructure.GPIO_Speed                 =  GPIO_Speed_2MHz;     //макс частота сигнала
	GPIO_InitStructure.GPIO_Mode                  = GPIO_Mode_Out_PP;      //симетричный выход
	GPIO_Init(GPIOB, &GPIO_InitStructure);                                //выполнить инициализацию
#else
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	GPIO_MULTI_INIT(GPIOB,BIN(0000110000000000),GPIO_MODE_OUTPUT2_PUSH_PULL_UP);

#endif
    while(1)
    {
    	volatile int i;
    	for(i=0;i<800000;i++);
    	GPIOB->ODR ^= GPIO_Pin_10;
    }
}

Размер получился следующим:
Вариант ст_либ ч структуры 1880, через GPIO_INIT.h 1696; вообще без инит_гпио, но с включением тактирования портаБ 1680
0
www.sugarsync.com/pf/D8201521_67427081_6580404
Фото (Чуть отличается от конечного варианта)

Вот заводил дисплей от 1202, может кому понадобится платка-переходник 8х36 мм. В архиве фото и лэйаут файл. Два варианта — под гребенку 0.1 д и под шлейф 0.05 д. Предусмотрены резюки под резет и подсветку, конденсатор питания. Если будете использовать, смотрите, окончательная конфигурация достигается перерезанием дорог.
www.sugarsync.com/pf/D8201521_67427081_6580494 Архив