NUCLEO
(přesměrováno z Nucleo)
soutěž:
Cortex | |
Nucleo KIT | |
Nucleo pinout
Arduino-compatible headers Morpho headers These headers give access to all STM32 pins.
|
Source code
IDE:
Compiler:
Example:
#include "mbed.h"
DigitalOut myled(LED1);
int main() {
while(1) {
myled = 1; // LED is ON
wait(0.2); // 200 ms
myled = 0; // LED is OFF
wait(1.0); // 1 sec
}
}
Blink color LED RGB
#include "mbed.h"
DigitalOut red(D5);
DigitalOut blue(D8);
DigitalOut green(D9);
int i;
int main() {
while(1) {
for (i=1; i<7; i++) {
red = i & 1;
blue = i & 2;
green = i & 4;
wait(0.2);
}
}
}
Read Button
#include "mbed.h"
DigitalIn mybutton(USER_BUTTON);
DigitalOut myled(LED1);
int main() {
while(1) {
if (mybutton == 0) { // Button is pressed
myled = !myled; // Toggle the LED state
wait(0.2); // 200 ms
}
}
}
PWM
#include "mbed.h"
PwmOut mypwm(PWM_OUT);
DigitalOut myled(LED1);
int main() {
mypwm.period_ms(10);
mypwm.pulsewidth_ms(1);
printf("pwm set to %.2f %%\n", mypwm.read() * 100);
while(1) {
myled = !myled;
wait(1);
}
}
Nucleo read button interrupt
#include "mbed.h"
InterruptIn mybutton(USER_BUTTON);
DigitalOut myled(LED1);
float delay = 1.0; // 1 sec
void pressed()
{
if (delay == 1.0)
delay = 0.2; // 200 ms
else
delay = 1.0; // 1 sec
}
int main()
{
mybutton.fall(&pressed);
while (1) {
myled = !myled;
wait(delay);
}
}
Nucleo_pwm2
#include "mbed.h"
DigitalOut my_led(LED1);
InterruptIn my_button(USER_BUTTON);
PwmOut my_pwm(PB_3);
void pressed() {
if (my_pwm.read() == 0.25) {
my_pwm.write(0.75);
}
else {
my_pwm.write(0.25);
}
}
int main()
{
// Set PWM
my_pwm.period_ms(10);
my_pwm.write(0.5);
// Set button
my_button.fall(&pressed);
while (1) {
my_led = !my_led;
wait(0.5); // 500 ms
}
}
Nucleo_read_analog_value
#include "mbed.h"
AnalogIn analog_value(A0);
DigitalOut led(LED1);
int main() {
float meas;
printf("\nAnalogIn example\n");
while(1) {
meas = analog_value.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
meas = meas * 3300; // Change the value to be in the 0 to 3300 range
printf("measure = %.0f mV\n", meas);
if (meas > 2000) { // If the value is greater than 2V then switch the LED on
led = 1;
}
else {
led = 0;
}
wait(0.2); // 200 ms
}
}
Nucleo_pwm3
#include "mbed.h"
Timeout timer;
DigitalOut my_led(LED1);
DigitalOut my_pwm(D10); // IO used by pwm_io function
int on_delay = 0;
int off_delay = 0;
void toggleOff(void);
void toggleOn(void) {
my_pwm = 1;
timer.attach_us(toggleOff, on_delay);
}
void toggleOff(void) {
my_pwm = 0;
timer.attach_us(toggleOn, off_delay);
}
// p_us = signal period in micro_seconds
// dc = signal duty-cycle (0.0 to 1.0)
void pwm_io(int p_us, float dc) {
timer.detach();
if ((p_us == 0) || (dc == 0)) {
my_pwm = 0;
return;
}
if (dc >= 1) {
my_pwm = 1;
return;
}
on_delay = (int)(p_us * dc);
off_delay = p_us - on_delay;
toggleOn();
}
int main() {
pwm_io(20000, 0.25); // 20ms - 25%
while(1) {
my_led = !my_led;
wait(0.5);
}
}
[]
7 segment
This is code from https://goo.gl/3BHgTp
....
void write_digit(__IO uint8_t digit){
if (digit == 1){
// digit 1 xuat 1; digit 2, 3, 4 xuat 0
GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(1)); // digit 1
GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(0)); // digit 2
GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(0)); // digit 3
GPIO_WriteBit(GPIOA, GPIO_Pin_6, (BitAction)(0)); // digit 4
}
if (digit == 2){
// digit 2 xuat 1; digit 1, 3, 4 xuat 0
GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(0)); // digit 1
GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(1)); // digit 2
GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(0)); // digit 3
GPIO_WriteBit(GPIOA, GPIO_Pin_6, (BitAction)(0)); // digit 4
}
}
void write_led_7_segment(__IO uint8_t number){
// Muc logic 0 -> led sang, muc logic 1 -> led toi
if (number == 0){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(0)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(0)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(1)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 1){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(1)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(1)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(1)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(1)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(1)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 2){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(1)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(0)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(1)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 3){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(1)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(1)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 4){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(1)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(1)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(1)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(0)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 5){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(1)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(1)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(0)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 6){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(1)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(0)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(0)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 7){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(1)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(1)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(1)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(1)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 8){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(0)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(0)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
if (number == 9){
GPIO_WriteBit(GPIOA, GPIO_Pin_12, (BitAction)(0)); // led A
GPIO_WriteBit(GPIOB, GPIO_Pin_4, (BitAction)(0)); // led B
GPIO_WriteBit(GPIOA, GPIO_Pin_15, (BitAction)(0)); // led C
GPIO_WriteBit(GPIOB, GPIO_Pin_6, (BitAction)(0)); // led D
GPIO_WriteBit(GPIOB, GPIO_Pin_7, (BitAction)(1)); // led E
GPIO_WriteBit(GPIOA, GPIO_Pin_11, (BitAction)(0)); // led F
GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(0)); // led G
GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)(1)); // led DP
}
}
....
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/